如何測試 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。

更新於:2020年6月12日

287 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告