如何測試 Python 函式是否丟擲異常?
我們編寫一個 unittest,只有當函式沒有丟擲預期異常時才會失敗。
我們還會測試 Python 函式是否丟擲異常。
例如,請檢視我們貼上到 Python shell 中用於測試 Python 型別安全的示例程式碼。
示例
import unittest class MyTestCase(unittest.TestCase): def test_1_cannot_add_int_and_str(self): with self.assertRaises(TypeError): 1 + '1' def test_2_cannot_add_int_and_str(self): import operator self.assertRaises(TypeError, operator.add, 1, '1') unittest.main(exit=False)
執行測試
輸出
終端輸出如下:
.. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK
測試一使用 assertRaises 作為上下文管理器,確保正確捕獲和清理錯誤,同時進行記錄。
我們也可以不使用上下文管理器來編寫它,參見測試二。第一個引數是您期望引發的錯誤型別,第二個引數是您正在測試的函式,其餘的 args 和關鍵字 args 將傳遞給該函式。
使用上下文管理器更簡單易讀。
正如我們預期的那樣,嘗試將 1 和 '1' 相加會導致 TypeError。
廣告