📅  最后修改于: 2020-11-06 05:21:22             🧑  作者: Mango
夹具是函数,将在应用它的每个测试函数之前运行。夹具用于向测试提供一些数据,例如数据库连接,要测试的URL和某种输入数据。因此,我们不必为每个测试运行相同的代码,而是可以将fixture函数附加到测试,它将在执行每个测试之前运行并将数据返回给测试。
一个函数被标记为固定装置-
@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在执行测试时,将夹具名称作为输入参数。然后执行夹具函数,并将返回值存储到输入参数中,供测试使用。
使用以下命令执行测试-
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将在下一章中进行说明。