Python pytest fixture和test都依赖于另一个fixture
我有一对夹具,用于测试带有x-y输入的函数。一个生成x值,另一个生成y值。测试取决于两者。y值也取决于x值。以下是设置的摘要:Python pytest fixture和test都依赖于另一个fixture,python,testing,pytest,Python,Testing,Pytest,我有一对夹具,用于测试带有x-y输入的函数。一个生成x值,另一个生成y值。测试取决于两者。y值也取决于x值。以下是设置的摘要: import pytest @pytest.fixture(params=['a', 'b', 'c']) def x_data(request): return request.param @pytest.fixture(params=['1', '2', '3']) def y_data(request, x_data): return requ
import pytest
@pytest.fixture(params=['a', 'b', 'c'])
def x_data(request):
return request.param
@pytest.fixture(params=['1', '2', '3'])
def y_data(request, x_data):
return request.param + x_data
def test_mathfunc(x_data, y_data):
print(f'\nTesting {x_data} vs {y_data}', end='')
当我使用pytest-s
运行此测试时,总共运行了9个测试,test\u func
中的打印输出显示传入测试的x\u数据始终与用于生成y\u数据的数据相同(当然,这正是我想要的):
我知道pytest缓存fixture结果,并尝试以尽可能少的次数评估fixture。对于这个简单的例子,这意味着行为是相当可靠的
问题是,我真的可以依靠这种行为吗?是否有一种情况我没有注意到,测试最终可能会被调用,例如,a,3c
Testing a vs 1a.
Testing a vs 2a.
Testing a vs 3a.
Testing b vs 1b.
Testing b vs 2b.
Testing b vs 3b.
Testing c vs 1c.
Testing c vs 2c.
Testing c vs 3c.