1

こんにちは、pytest doc に記載されている次の例を試しています。

# content of test_expectation.py
@pytest.mark.parametrize("test_input,expected", [
("3+5", 8),
("2+4", 6),
("6*9", 42),
])
def test_eval(test_input, expected):
    assert eval(test_input) == expected

py.test -v を使用して実行すると、以下のような出力が得られます。

test_code.py::test_eval[3+5-8] PASSED
test_code.py::test_eval[2+4-6] PASSED
test_code.py::test_eval[6*9-42] FAILED

ここで、HTML レポートを生成すると、非常に長い入力データを使用すると、名前が長すぎます。

上記の例では、最初の結果を取得しないように、メソッドの名前は [3+5-8] です。つまり、タプル (3+5,8) を取得し、実際のテスト ケース メソッド名に追加します。

私の場合、タプルは (3+5,8) ではなく ("短い名前", "非常に長い文字列") であるため、HTML レポートでは非常に長く表示されます。2番目の値ではなく、「短い名前」のみを表示することは可能ですか?

4

1 に答える 1

2

質問が明確になるように、現在表示されている長い名前と予想される短い名前を貼り付けてください。念のため、@pytest.mark.parametrize の「ids」フィールドを使用して、表示されるテスト名をパラメータ化された値でカスタマイズできます。

例えば

@pytest.mark.parametrize("test_input,expected", [
("3+5", 8), 
("2+4", 6),
("6*9", 42),
], ids=['cust_name_1', 'cust_name_2', 'cust_name_3'])
def test_eval(test_input, expected):
...

テスト名を次のように表示します

test_code.py::test_eval[cust_name_1] PASSED
test_code.py::test_eval[cust_name_1] PASSED
test_code.py::test_eval[cust_name_1] FAILED
于 2016-03-06T14:28:55.073 に答える