2 回答

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
似乎當(dāng)前唯一支持的動(dòng)態(tài)實(shí)例化夾具request的getfixturevalue方法是通過夾具,特別是方法
這在 pytest 鉤子中的測(cè)試時(shí)間之前無法訪問,但您可以通過自己使用夾具來完成相同的操作
這是一個(gè)(人為的)示例:
import pytest
@pytest.fixture
def load_data():
def f(fn):
# This is a contrived example, in reality you'd load data
return f'data from {fn}'
return f
TEST_DATA = None
@pytest.fixture(autouse=True)
def set_global_loaded_test_data(request):
global TEST_DATA
data_loader = request.getfixturevalue('load_data')
orig, TEST_DATA = TEST_DATA, data_loader(f'{request.node.name}.txt')
yield
TEST_DATA = orig
def test_foo():
assert TEST_DATA == 'data from test_foo.txt'

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
有一種方法可以從測(cè)試中獲取使用過的夾具。
#Conftest.py#
def pytest_runtest_makereport(item, call):
if call.when == 'call':
cif_fixture = item.funcargs["your_cool_fixture"]
print(cif_fixture)
#test_file.py#
@pytest.fixture(scope="module")
def your_cool_fixture(request):
return "Hi from fixture"
def test_firsttest(your_cool_fixture):
print(your_cool_fixture)
添加回答
舉報(bào)