str
とdict
を引数とするパラメータ化されたテストがあるため、pytestでIDを生成できるようにすると名前がかなり奇妙に見えます。pytestカスタムID関数でパラメータ化されたテスト
私は関数を使用してカスタムIDを生成しますが、意図したとおりに機能していないようです。
def id_func(param):
if isinstance(param, str):
return param
@pytest.mark.parametrize(argnames=('date', 'category_value'),
argvalues=[("2017.01", {"bills": "0,10", "shopping": "100,90", "Summe": "101,00"}),
("2017.02", {"bills": "20,00", "shopping": "10,00", "Summe": "30,00"})],
ids=id_func)
def test_demo(date, category_value):
pass
私はそれがこの
test_file.py::test_demo[2017.01] PASSED
test_file.py::test_demo[2017.02] PASSED
のようなものを返すだろうと考えましたが、それは、これを返します。
test_file.py::test_demo[2017.01-category_value0] PASSED
test_file.py::test_demo[2017.02-category_value1] PASSED
誰かがこれに間違っていることを教えてもらえますか、これを達成する方法はありますか?
アップデート:私は問題で何を実現 、if_funcは、各パラメータのために呼び出され、私は任意のパラメータのデフォルト機能のためstr
を返さない場合に呼び出されます。私は修正がありますが、それはまた醜いです。
def id_func(param):
if isinstance(param, str):
return param
return " "
は、今では(すなわちreturn ""
)は、デフォルトの表現をとる
test_file.py::test_demo[2017.01- ] PASSED
test_file.py::test_demo[2017.02- ] PASSED
問題は、私は空の文字列を返す場合でもあり、このようなものを返します。誰かがなぜ私に知らせることができますか?