Python py.test参数化夹具之间的布尔切换

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

如何在参数化之间切换,而不进行两者之间的所有组合?例如,下面的测试将运行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(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