如何跳过特定的参数化测试?

时间:2019-05-13 15:50:19

标签: python pytest

我有一个参数化的Pytest测试,例如:

testdata = [
    MyDB(id="0001", result=True),
    MyDB(id="0002", result=False)
]
@pytest.mark.parametrize("data", testdata, ids=[repr(id) for id in testdata])
def test_1(data):
    pass

问题是,如何使用@ pytest.mark.skipif跳过ID为“ 0001”的测试?

1 个答案:

答案 0 :(得分:2)

您可以使用pytest.paramreference)来接受marks可选参数:

testdata = [
    pytest.param(MyDB(id="0001", result=True), marks=pytest.mark.skip)
    MyDB(id="0002", result=False)
]
@pytest.mark.parametrize("data", testdata, ids=[repr(id) for id in testdata])
def test_1(data):
    pass

您也可以(这是一种很好的做法)指出为什么跳过测试:

pytest.param(MyDB(id="0001", result=True),
              marks=pytest.mark.skip(reason=('a good and informative reason'))