如何在不进行各种组合的情况下切换参数化?例如,下面的测试将运行24次测试(分别为asdf
,jkl
和BOOLEAN
的4 * 3 * 2)。
但我只想在asdf
和jkl
之间切换为输出,因此总共应该只有7个测试,因为我只想让asdf_or_jkl
返回一个 asdf
或jkl
的参数化,而不是三个参数的乘积。是否可以使用py.test
的灯具来完成此操作,还是需要做其他事情?
import pytest
@pytest.fixture(params=list('asdf'))
def asdf(request):
return request.param
@pytest.fixture(params=list('jkl'))
def jkl(request):
return request.param
@pytest.fixture(params=[True, False])
def BOOLEAN(request):
return request.param
@pytest.fixture
def asdf_or_jkl(BOOLEAN, asdf, jkl):
if BOOLEAN:
return asdf
else:
return jkl
def test_2(asdf_or_jkl):
assert asdf_or_jkl == 0
谢谢!
答案 0 :(得分:0)
怎么样:
import pytest
list1=list('ASDF')
list2=list('jkl')
def alternate(list1, list2):
num = min(len(list1), len(list2))
result = [None]*(num*2)
result[::2] = list1[:num]
result[1::2] = list2[:num]
result.extend(list1[num:])
result.extend(list2[num:])
return result
@pytest.fixture(params=alternate(list1, list2))
def asdf_or_jkl(request):
return request.param
def test_2(asdf_or_jkl):
assert asdf_or_jkl == 0