PyTest:面向后端工程师的Python测试框架

0 股票
0
0
0
0

介绍

作为技术支持工程师或质量保证/测试工程师,确保代码的质量和可靠性至关重要。实现这一目标的方法之一是使用 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 中实现它的分步指南。随着代码库的演进,持续编写和更新测试用例至关重要。通过投入时间和精力进行测试,您可以更快地发现错误,提高代码质量,并交付更健壮、更可靠的软件。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢