我有一堆不同的對象具有類似的預期行爲,因此我想對它們運行類似的測試,但不一定對它們進行相同的測試。在python中參數化測試的最簡單方法是什麼?
具體而言,可以說我有一些排序函數,並且檢查排序函數是否實際排序。一些排序功能旨在處理一些輸入,而不是其他輸入。
我想寫一些接近下面的代碼。但是,鼻子不能很好地告訴我測試失敗的位置以及輸入數據。如果check_sort在case2上的sort2失敗,我將無法看到。
def check_sort(sortalg, vals):
assert sortalg(vals) == sort(vals)
def test_sorts():
case1 = [1,3,2]
case2 = [2,31,1]
check_sort(sort1, case1)
for c in [case1, case2]:
check_sort(sort2, c)
我想能夠簡單地添加一個裝飾器到check_sort來告訴鼻子它是一個嵌套測試。像
@nested_test
def check_sort(sortalg, vals):
assert sortalg(vals) == sort(vals)
的想法是什麼,當它被調用時,它本身註冊的鼻子,如果失敗將報告其輸入。
它看起來像pytest提供pytest.mark.parameterized,但這對我來說似乎相當尷尬。我必須將所有參數放在函數的上方,所以在測試中我不能重複調用它。我也不認爲這支持多層嵌套。
鼻子也提供test generators,這似乎更接近,但仍然沒有我希望的那麼清楚。