- 單元測試框架教程
- 單元測試框架 - 首頁
- 單元測試框架 - 概述
- 單元測試框架 - 框架
- 單元測試框架 - API
- 單元測試框架 - 斷言
- 單元測試框架 - 測試發現
- 單元測試框架 - 跳過測試
- 單元測試框架 - 異常測試
- 單元測試框架 - 時間測試
- 單元測試框架 - Unittest2
- 單元測試框架 - 訊號處理
- 單元測試框架 - Doctest
- 單元測試框架 - Doctest API
- 單元測試框架 - Py.test 模組
- Nose 測試 - 框架
- Nose 測試 - 工具
- 單元測試框架資源
- 單元測試框架 - 快速指南
- 單元測試框架 - 資源
- 單元測試框架 - 討論
單元測試框架 - 異常測試
Python 測試框架提供以下斷言方法來檢查是否引發了異常。
assertRaises(exception, callable, *args, **kwds)
測試當函式使用任何位置或關鍵字引數呼叫時是否引發異常(第一個引數)。如果引發了預期的異常,則測試透過;如果引發了其他異常,則為錯誤;如果未引發任何異常,則測試失敗。要捕獲任何一組異常,可以將包含異常類的元組作為 exception 傳遞。
在下面的示例中,定義了一個測試函式來檢查是否引發了 ZeroDivisionError。
import unittest
def div(a,b):
return a/b
class raiseTest(unittest.TestCase):
def testraise(self):
self.assertRaises(ZeroDivisionError, div, 1,0)
if __name__ == '__main__':
unittest.main()
testraise() 函式使用 assertRaises() 函式來檢視當呼叫 div() 函式時是否發生除以零錯誤。以上程式碼將引發異常。但更改 div() 函式的引數如下所示:
self.assertRaises(ZeroDivisionError, div, 1,1)
使用這些更改執行程式碼時,測試將失敗,因為不會發生 ZeroDivisionError。
F
================================================================
FAIL: testraise (__main__.raiseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "raisetest.py", line 7, in testraise
self.assertRaises(ZeroDivisionError, div, 1,1)
AssertionError: ZeroDivisionError not raised
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)
assertRaisesRegexp(exception, regexp, callable, *args, **kwds)
測試regexp 是否與引發異常的字串表示形式匹配。regexp 可以是正則表示式物件,也可以是包含適合 re.search() 使用的正則表示式的字串。
以下示例顯示瞭如何使用 assertRaisesRegexp():
import unittest
import re
class raiseTest(unittest.TestCase):
def testraiseRegex(self):
self.assertRaisesRegexp(TypeError, "invalid", reg,"Point","TutorialsPoint")
if __name__ == '__main__':
unittest.main()
這裡,testraseRegex() 測試不會失敗,因為第一個引數。"Point" 在第二個引數字串中找到。
================================================================
FAIL: testraiseRegex (__main__.raiseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:/Python27/raiseTest.py", line 11, in testraiseRegex
self.assertRaisesRegexp(TypeError, "invalid", reg,"Point","TutorialsPoint")
AssertionError: TypeError not raised
----------------------------------------------------------------------
但是,更改如下所示:
self.assertRaisesRegexp(TypeError, "invalid", reg,123,"TutorialsPoint")
將丟擲 TypeError 異常。因此,將顯示以下結果:
================================================================
FAIL: testraiseRegex (__main__.raiseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "raisetest.py", line 11, in testraiseRegex
self.assertRaisesRegexp(TypeError, "invalid", reg,123,"TutorialsPoint")
AssertionError: "invalid" does not match
"first argument must be string or compiled pattern"
----------------------------------------------------------------------
廣告