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

时间:2014-12-19 02:13:19

标签: python pytest

如何在不进行各种组合的情况下切换参数化?例如,下面的测试将运行24次测试(分别为asdfjklBOOLEAN的4 * 3 * 2)。

但我只想在asdfjkl之间切换为输出,因此总共应该只有7个测试,因为我只想让asdf_or_jkl返回一个 asdfjkl的参数化,而不是三个参数的乘积。是否可以使用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

谢谢!

1 个答案:

答案 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