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