是否可以顯示失敗的斷言值?它顯示了回溯和拋出什麼樣的異常,但知道哪些值失敗會更實際。Python單元測試:使鼻子顯示失敗的斷言值
例子:
assert result.file == file
AssertionError
是否可以顯示失敗的斷言值?它顯示了回溯和拋出什麼樣的異常,但知道哪些值失敗會更實際。Python單元測試:使鼻子顯示失敗的斷言值
例子:
assert result.file == file
AssertionError
assert result.file == file, "%s != %s" % (result.file, file,)
這就是爲什麼醜陋self.assert<Foo>
方法unittest.TestCase
,而不是介紹好和短斷言:self.assert<Foo>
方法知道如何顯示故障信息。
順便說一句,我還以爲鼻子做了一些黑魔法所以在簡單的情況下
assert a == b
應該表現出有意義的錯誤消息。
另一種可能性:定義自己的函數,它的伎倆:
def assert_eq(obt, exp):
assert obt==exp, "\n*Expected:\n%s\n*Obtained:\n%s" % (exp, obt)
你可以調用它,而不是assert
:
assert_eq (self.data['SQ'].code, "SQ")
這將返回這個漂亮的錯誤:
超級!我想知道,如果你添加第三個參數 - 測試描述,那就是 - 你甚至不需要爲每個簡單測試定義一個單獨的方法,對嗎?基本上,它看起來像來自Test :: More的Perl的ok()方法。 – badbishop 2017-01-09 15:45:36
@badbishop我描述的方法可以適用於所有的測試。但是,可以通過在消息中添加第三個參數來定製它(可以使用默認消息作爲我所描述的參數進行選擇)。 – 2017-01-11 04:52:30
謝謝,我應該使用self.assert。你可以讓鼻子用-d顯示更多信息。它將顯示類型,但不顯示實際值。 – Pickels 2010-09-01 19:20:14
只要注意你爲什麼說他們很醜。括號並沒有== ...惡作劇。 – Pickels 2010-09-01 19:29:24
@Pickels現在你可以使用[pytest](http://doc.pytest.org/en/latest/)。它鼓勵裸露的聲明,但執行一些代碼分析來優化失敗輸出,因此您可以獲得兩全其美的好處。 – augurar 2017-01-11 02:29:25