【发布时间】:2022-12-08 07:22:59
【问题描述】:
我正在尝试在多个灯具上运行同一组测试,并让灯具通过多个不同的输入运行,每个灯具的输入都是唯一的。
我当前的代码减少到与此类似的东西
FN_A_FILES = ['ab/x.txt','ab/y.txt','ab/z.txt']
FN_B_FILES = ['abcd/x.txt','abcd/y.txt','abcd/z.txt']
@pytest.fixture
def foo(request, fn_a, fn_b):
return request.getfixturevalue(request.param)
@pytest.fixture(scope='session', params=FN_A_FILES)
def fn_a(request):
file_path = request.param[:3]
file_name = request.param[3:]
return [file_path, file_name]
@pytest.fixture(scope='session', params=FN_B_FILES)
def fn_b(request):
file_path = request.param[:5]
file_name = request.param[5:]
return [file_path, file_name]
@pytest.mark.parametrize('foo', ['fn_a', 'fn_b'], indirect=True)
def test_foo(foo):
assert '/' in foo[0]
assert '.txt' in foo[1]
我想要发生的是 test_foo 测试
fn_a('ab/x.txt')
fn_a('ab/y.txt')
fn_a('ab/z.txt')
fn_b('abcd/x.txt')
fn_b('abcd/y.txt')
fn_b('abcd/z.txt')
就目前而言,上面的代码似乎正在运行比必要的更多的测试,所以我认为它正在找到(FN_A_FILES,FN_B_FILES)的每个排列,然后在上面找到一些;我不能完全理解我脑子里的数字。
在我的非抽象代码中,我有三个文件列表,两个每个有 3 个文件,一个有 1 个文件。我有三个固定装置(每个列表一个)和一个调用固定装置的 test_function。以某种方式运行它会增加多达 27 个不同的测试运行,而我只想运行 7 个(两个灯具具有不同的 3 个输入集,一个灯具具有 1 个输入)。
有谁知道如何设置它以便只运行 6 个测试?
【问题讨论】:
标签: python-3.x pytest