Pytest fixture
fixture是在应用于每个测试函数之前运行的函数。fixture用于向测试提供一些数据,比如数据库连接,待测试的URL和一些输入数据。因此,我们可以将固定装置函数附加到测试中,而不是为每个测试运行相同的代码,它将在执行每个测试之前运行并返回数据给测试。
通过下面的方式将函数标记为固定装置:
@pytest.fixture
测试函数可以通过将fixture名称作为输入参数来使用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 的fixture函数,它为测试提供输入。为了访问fixture函数,测试必须将fixture的名称作为输入参数进行提及。
在测试执行时,当Pytest看到fixture名称作为输入参数时,它会执行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 将在下一章中进行解释。
Pytest教程目录索引
- Pytest 教程
- Pytest 简介
- Pytest 环境搭建
- Pytest 标识测试文件和测试函数
- Pytest 着手编写基本测试
- Pytest 文件执行
- Pytest 执行一部分测试套件
- Pytest 测试名称的子字符串匹配
- Pytest 分组测试
- Pytest fixture
- Pytest Conftest.py
- Pytest 参数化测试
- Pytest 选择xfail测试或跳过测试
- Pytest 在N个测试失败后停止测试套件
- Pytest 并行运行测试
- Pytest 以XML格式执行测试的结果
- Pytest 总结