背景
我們有時候需要斷言一些方法會拋出異常,這些異常需要符合我們的預期。
代碼
新建test_exception.py
文件,內容如下
import unittest
class DivZeroTestCase(unittest.TestCase):
def test_should_raise_exception(self):
with self.assertRaises(ZeroDivisionError):
1 / 0
if __name__ == '__main__':
unittest.main()
運行及結果
$ python test_exception.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
我們能學到什么
- 上面的例子斷言了當0作為除數的時候會拋出
ZeroDivisionError
- 斷言異常是有套路的,使用
with
語句加assertRaises
,assertRaises的參數中傳入預期的異常(這些異常可能需要先import進來),在with的子句中放上會拋出異常的語句或表達式
參考
http://www.testclass.net/pyunit/assert_raise
斷言異常方法,實際運行的時候發生期望的異常,屬於測試通過。