介绍
作为技术支持工程师或质量保证/测试工程师,确保代码的质量和可靠性至关重要。实现这一目标的方法之一是使用 Python 测试框架来自动化测试流程,并在发布或部署软件之前识别代码中的错误或问题。.
它们提供以下好处:
- 测试框架可以提高代码质量。.
- 自动化测试可以节省时间和精力。.
- 代码重用性可以优化测试工作并减少重复劳动。.
- Python 测试框架可以与其他工具、模块和库无缝集成。.
在本分步指南中,您将学习如何实现 PyTest——最流行的 Python 测试框架之一。.
先决条件
在深入了解 Python 测试框架的细节之前,我们先来关注一下实现 PyTest 的先决条件。.
- 安装 Python:请确保您的系统已安装 Python。您可以从 Python 官方网站下载最新版本。.
- 安装 Pip:Pip(Python 包安装程序)是用于管理 Python 中的包、库和依赖项的工具。它允许我们安装和管理 Python 包。请确保您的系统已安装 Pip。.
您可以通过在命令行/终端中运行以下命令来检查 pip 是否已安装:
python -m pip --version或者
python3 -m pip --version什么是Python测试框架?
Python 测试框架是一套工具和库,它为使用 Python 编写和执行自动化测试提供了结构和指导原则。它确保代码符合所需的质量标准。对于后端开发人员、软件工程师、DevOps 工程师和 QA/测试工程师来说,它都至关重要且非常实用。一些著名且广泛使用的 Python 测试框架包括 Pytest、PyUnit、DocTest、Testify、Robot 等等。.
PyTest 实现
安装 PyTest
要开始使用 PyTest,您需要在系统上安装它。打开终端并运行以下命令:
pip install pytest此命令将下载并安装最新版本的 PyTest 及其依赖项。.
编写测试题
现在 PyTest 已经安装好了,让我们开始编写一些基本的单元测试用例吧。.
请创建一个新的Python文件并将其命名为 test_backend.py 此文件使用 PyTest 语法定义了我们的测试用例。.
注意:默认情况下,PyTest 会查找并运行文件名以«test_»开头或以«_test»结尾的所有测试用例文件。PyTest 的查找过程会递归扫描当前文件夹及其子文件夹,查找以”test_“开头或以”_test”结尾的文件,然后运行这些文件中的测试用例。.
import pytest
def test_addition():
assert 3 + 3 == 6
def test_subtraction():
assert 5 - 4 == 1
def test_multiplication():
assert 4 * 4 == 16
def test_division():
assert 10 / 2 == 5在上面的示例中,我们定义了四个基本的单元测试函数:`test_addition`、`test_subtraction`、`test_multiplication` 和 `test_division`。`assert` 关键字用于调试代码,它可以测试代码中的特定条件是否为 `True`。如果不是,则返回 `AssertionError`。.
执行测试用例,执行特定测试
要运行测试,请转到保存 test_backend.py 文件的文件夹,然后在终端或命令行中运行以下命令:
pytest或者
python -m pytest输出:
Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ....
==================================================
4 passed in 0.01s 使用 PyTest 时,您无需手动运行文件中的每个测试用例。该工具会自动查找并运行所有已定义的测试用例。如果一切顺利且所有断言都正确,您将获得一份清晰的测试结果摘要,以及如上所示的通过测试用例数量。.
假设此时其中一项测试失败,我们会看到以下输出:
Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ...F
================================================== [100%]
FAILURES
==================================================
test_division
def test_division():
> assert 10 / 2 == 6
E assert (10 / 2) == 6
test_backend.py:13: AssertionError
short test summary info
==================================================
FAILED test_backend.py::**test_division** - assert (10 / 2) == 6
1 failed, 3 passed in 0.01s
实验发现
PyTest 提供强大的测试用例发现功能,使您能够以结构化的方式组织测试用例。默认情况下,PyTest 会发现并执行所有文件名以«test_»开头或以«_test»结尾的测试用例文件。但是,您可以使用各种命令行选项或配置文件来自定义测试用例发现过程。 pytest.ini 定制。.
例如,您可以通过运行以下命令来指定要搜索测试模块的特定目录:
pytest tests/此命令只会运行“tests”目录中的测试用例。.
测试设备
Pytest 中的测试工具是功能强大的组件,可以重复使用,为测试用例建立一致的基准。它们在创建测试前提条件以及测试完成后清理资源时非常实用。Pytest 让定义和使用测试工具变得轻松便捷。.
要定义测试夹具,必须使用装饰器。 @pytest.fixture 例如,下面定义的名为 db 的 fixture 将打开一个数据库连接,并在操作完成后关闭该连接。我们可以按如下方式定义此 fixture:
import pytest
@pytest.fixture
def db():
# Set up the database connection
db = create_db()
yield db
# Clean up the database connection
db.close()在这个例子中,yield 语句定义了在测试用例执行完毕后要执行的代码。yield 关键字用于控制生成器函数的流程,类似于 Python 中用于返回值的 return 语句。.
要在测试中使用 fixture,必须将其作为参数传递给测试函数。.
例如:
def query_test(db):
results = db.query("SELECT * FROM users")
assert len(result) == 12在本测试用例中,夹具 数据库 自动运行 查询测试() 它通过注入的方式提供,允许您使用它来执行数据库操作。测试夹具对于开发人员准备特定的测试环境非常有用,例如数据库连接、API 客户端或模拟对象。使用测试夹具,开发人员可以确保测试的隔离性和可重复性。.
测试工程师还可以使用设备来准备被测系统、管理测试数据或模拟复杂场景。.
此外,这些设备还可用于测试后清理资源、提高可靠性以及维护测试集。.
结果
在本教程中,我们学习了如何实现和使用 PyTest,它是最流行、功能最丰富的 Python 测试框架之一,并提供了在 Python 中实现它的分步指南。随着代码库的演进,持续编写和更新测试用例至关重要。通过投入时间和精力进行测试,您可以更快地发现错误,提高代码质量,并交付更健壮、更可靠的软件。.









