pytestでは、parametrizeを使うと、条件を変えてテストすることができます。
以下の例では、x=0、x=1とx=2の3パターンがテストされます。
@pytest.mark.parametrize("x", [0, 1, 2]) def test_foo(x): pass
ここに、flag=True/Falseも条件に加えたいとします。
x=0, flag=True、x=0, flag=False、x=1, flag=True、...と6パターンに増えます。
@pytest.mark.parametrize( "x, flag", [ (0, True), (0, False), (1, True), (1, False), (2, True), (2, False) ] ) def test_foo(x, flag): pass
6パターンくらいだと上記のようにかけますが、掛け算の数が増えると大変です。
そこで、parametrizeは複数重ねることができ、これを用いると楽に書けます。
@pytest.mark.parametrize("x", [0, 1, 2]) @pytest.mark.parametrize("flag", [True, False]) def test_foo(x, flag): pass
参考
Parametrizing fixtures and test functions — pytest documentation