2016-06-01 8 views
7

私のパラメータは、私のパラメータ化されたpytestの名前を決定します。私はこれらのテストにいくつかの無作為化されたパラメータを使用します。 junitのレポート名がうんざりしないように、パラメータ化されたテストごとに静的な名前を作成したいと思います。pytestのパラメータ化された関数名をオーバーライド

可能ですか?

JUnitは、パラメータを持っているようだ:Changing names of parameterized tests

class TestMe: 
    @pytest.mark.parametrize(
     ("testname", "op", "value"), 
     [ 
      ("testA", "plus", "3"), 
      ("testB", "minus", "1"), 
     ] 
    ) 
    def test_ops(self, testname, op, value): 

私はテスト実行中に名前を変更することができますが、私はrequest.node.nameを上書きしてみました。

私はほとんど肯定的です。プラグインまたはフィクスチャーを書く必要があります。あなたはこれについて最善の方法とは何だろうと思いますか?

答えて

8

あなたはpytest.mark.parametrizeids引数を探しています:

文字列IDのリスト、または呼び出し可能。文字列の場合、それぞれがargvaluesに対応する になり、テストIDの一部になります。呼び出し可能な場合は、 は1つの引数(単一のargvalue)を取り、文字列を返すか、 return なしを返す必要があります。

あなたのコードは

@pytest.mark.parametrize(
    ("testname", "op", "value"), 
    [ 
     ("testA", "plus", "3"), 
     ("testB", "minus", "1"), 
    ], 
    ids=['testA id', 'testB id'] 
) 
def test_industry(self, testname, op, value): 
ようになります。
関連する問題