32
社区成员
发帖
与我相关
我的任务
分享
在定义fixture函数的时候,通过将autouse设置为True即可,如下所示,虽然整个过程中都没有调用init_name这个fixture,但是通过最后执行的结果看,这个init_name的fixture明显是执行了的,这是因为在init_name这个fixture上面使用了@pytest.fixture(autouse=True),将autouse参数设置了True的原因
test_demo.py如下
import pytest
@pytest.fixture()
def get_name():
print("\nin get_name fixture...")
return []
@pytest.fixture(autouse=True)
def init_name(get_name):
print("\nin init fixture...")
get_name.append("张无忌")
get_name.append("张三丰")
def test_func(get_name):
assert "周芷若" in get_name
执行结果如下
$ pytest -s
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\src\blog\tests, configfile: pytest.ini
plugins: allure-pytest-2.9.43, caterpillar-pytest-0.0.2, hypothesis-6.31.6, forked-1.3.0, rerunfailures-10.1, xdist-2.3.0
collected 1 item
test_demo.py
in get_name fixture...
in init fixture...
F
=============================================================================== FAILURES ===============================================================================
______________________________________________________________________________ test_func _______________________________________________________________________________
get_name = ['张无忌', '张三丰']
def test_func(get_name):
> assert "周芷若" in get_name
E AssertionError: assert '周芷若' in ['张无忌', '张三丰']
test_demo.py:15: AssertionError
======================================================================= short test summary info ========================================================================
FAILED test_demo.py::test_func - AssertionError: assert '周芷若' in ['张无忌', '张三丰']
========================================================================== 1 failed in 0.11s ===========================================================================