在写一个项目前, 可以先编写测试模块
测试模块中包含了一个个最小的功能
当每一个功能都完善正确时
再将这些功能转换成项目运行的功能
多个项目运行的功能就组成了一个模块
多个模块就组成了一个项目服务
pytest 是一个 Python 测试框架,它提供了简单易用的语法和丰富的测试运行、收集和报告功能。在下面的代码中,我将向你展示如何使用 pytest 来编写和运行 Python 测试。
- 安装 pytest
首先,你需要安装 pytest。可以通过以下命令来安装:
pip install pytest
- 创建测试文件
pytest 会自动收集所有以 test_*.py
或 *_test.py
命名的文件中定义的测试函数。
因此,我们可以创建一个 test_example.py 文件,并在其中编写一些测试函数。
def test_addition():assert sum([1, 2, 3]) == 6, "Should be 6"def test_subtraction():assert abs(4 - 3) == 1, "Should be 1"
运行测试
接下来,我们可以使用以下命令来运行测试:
pytest
pytest 将搜索目录中的所有测试文件,并执行其中的所有测试函数。在上述例子中,你应该会看到类似于以下输出:
============================= test session starts =============================
platform darwin -- Python 3.8.2, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /path/to/your/project
collected 2 items test_example.py .. [100%]============================== 2 passed in 0.01s ==============================
在执行测试时,pytest 还会为每个测试函数生成一个报告,显示该测试是否通过或失败,并打印出相关的信息。
- 使用 pytest 的其他功能
pytest 提供了许多有用的功能,如参数化测试、测试生成器、测试固件等。
下面是一个例子,展示如何使用参数化测试来测试 factorial 函数:
import math
import pytest@pytest.mark.parametrize("test_input, expected_output", [(0, 1),(1, 1),(2, 2),(3, 6),(4, 24),(5, 120),
])
def test_factorial(test_input, expected_output):assert math.factorial(test_input) == expected_output
在上述代码中,我们使用了 @pytest.mark.parametrize
装饰器来对 test_factorial 函数进行参数化,将输入值和预期输出值作为元组传递给该装饰器。
在运行测试时,pytest 将自动执行该函数的每个参数组合,并检查返回值是否符合预期输出值。