Pytest Conftest.py


我们可以在这个文件中定义夹具函数,以使它们可以跨多个测试访问 files.

创建一个新文件 conftest.py 并在其中添加以下代码:

import pytest

@pytest.fixture
def input_value():
    input = 39
    return input

Edit the test_div_by_3_6.py 移除夹具功能:

import pytest

def test_divisible_by_3(input_value):
    assert input_value % 3 == 0

def test_divisible_by_6(input_value):
    assert input_value % 6 == 0

创建一个新文件 test_div_by_13.py

import pytest

def test_divisible_by_13(input_value):
    assert input_value % 13 == 0

现在,我们有了文件 test_div_by_3_6.py and test_div_by_13.py 使用定义在 conftest.py .

通过执行以下命令运行测试:

pytest -k divisible -v

上面的命令会产生如下结果:

test_div_by_13.py::test_divisible_by_13 PASSED
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创建一个新文件 AssertionError
========================== 1 failed, 2 passed, 6 deselected in 0.09 seconds
==========================

测试将在同一文件中查找夹具。由于在文件中没有找到fixture,它会在conftest.py 文件中检查fixture。找到它后,将调用fixture 方法并将结果返回到测试的输入参数。