- Pytest教程
- Pytest - 主页
- Pytest - 简介
- Pytest - 环境设置
- 识别测试文件和函数
- Pytest - 从基本测试开始
- Pytest - 文件执行
- 执行测试套件的子集
- 测试名称的子字符串匹配
- Pytest - 对测试进行分组
- Pytest - 装置
- Pytest-Conftest.py
- Pytest - 参数化测试
- Pytest - Xfail/跳过测试
- N 次测试失败后停止测试套件
- Pytest - 并行运行测试
- XML 格式的测试执行结果
- Pytest - 总结
- Pytest - 结论
- Pytest 有用的资源
- Pytest - 快速指南
- Pytest - 有用的资源
- Pytest - 讨论
Pytest - 装置
夹具是函数,它将在应用它的每个测试函数之前运行。Fixtures 用于向测试提供一些数据,例如数据库连接、要测试的 URL 和某种输入数据。因此,我们可以将固定功能附加到测试中,而不是为每个测试运行相同的代码,它会在执行每个测试之前运行并将数据返回到测试。
一个函数被标记为固定装置 -
@pytest.fixture
测试函数可以通过将夹具名称作为输入参数来使用夹具。
创建文件test_div_by_3_6.py并将以下代码添加到其中
import pytest @pytest.fixture def input_value(): input = 39 return input def test_divisible_by_3(input_value): assert input_value % 3 == 0 def test_divisible_by_6(input_value): assert input_value % 6 == 0
在这里,我们有一个名为input_value的固定函数,它为测试提供输入。要访问固定装置功能,测试必须将固定装置名称作为输入参数。
Pytest 在执行测试时,会将夹具名称视为输入参数。然后执行fixture函数,并将返回值存储到输入参数中,供测试使用。
使用以下命令执行测试 -
pytest -k divisible -v
上述命令将生成以下结果 -
test_div_by_3_6.py::test_divisible_by_3 PASSED test_div_by_3_6.py::test_divisible_by_6 FAILED ============================================== FAILURES ============================================== ________________________________________ test_divisible_by_6 _________________________________________ input_value = 39 def test_divisible_by_6(input_value): > assert input_value % 6 == 0 E assert (39 % 6) == 0 test_div_by_3_6.py:12: AssertionError ========================== 1 failed, 1 passed, 6 deselected in 0.07 seconds ==========================
然而,这种方法有其自身的局限性。测试文件内定义的固定功能仅在测试文件内有效。我们不能在另一个测试文件中使用该装置。为了使固定装置可用于多个测试文件,我们必须在名为 conftest.py 的文件中定义固定装置函数。conftest.py将在下一章中解释。