Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pytest fixture和test都依赖于另一个fixture_Python_Testing_Pytest - Fatal编程技术网

Python pytest fixture和test都依赖于另一个fixture

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

我有一对夹具,用于测试带有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 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.