Python py.test参数化夹具之间的布尔切换
如何在参数化之间切换,而不进行两者之间的所有组合?例如,下面的测试将运行24个测试(分别为Python py.test参数化夹具之间的布尔切换,python,pytest,Python,Pytest,如何在参数化之间切换,而不进行两者之间的所有组合?例如,下面的测试将运行24个测试(分别为asdf、jkl和BOOLEAN的4*3*2) 但是我只想在asdf和jkl之间切换作为输出,所以总共应该只有7个测试,因为我只想asdf\u或jkl返回asdf或jkl的参数化的一个,而不是三个参数的乘积。是否可以使用py.test的夹具进行此操作,或者您是否需要执行其他操作 import pytest @pytest.fixture(params=list('asdf')) def asdf(requ
asdf
、jkl
和BOOLEAN
的4*3*2)
但是我只想在asdf
和jkl
之间切换作为输出,所以总共应该只有7个测试,因为我只想asdf\u或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
谢谢 这个呢:
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
你能把名单放在外面吗
l1=list('asdf')
和@pytest.fixture(params=list1)
感谢您的输入!使用params=[list1,list2]
,这将创建4个测试,两个用于布尔值,两个用于列表列表中的元素,因此元素测试是冗余的。这里的列表是抽象的,实际的测试是使用5个以上的fixture参数化object1
,我想比较一下不同的5个以上fixture参数化object2
。