0
我有一個參數化測試,它需要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 " "
現在它返回這樣的事情,
test_file.py::test_demo[2017.01- ] PASSED
test_file.py::test_demo[2017.02- ] PASSED
的問題是,即使我返回空字符串(即return ""
)所花費的默認表示。有人能告訴我爲什麼嗎?