今天學習的是對測試中的異常進行捕獲,主要用到了兩個方法,assertRaises()和assertRaisesRegex()方法html
from unittest import TestCase from unittest import main def division(a, b): return a / b class MyTest(TestCase): def setUp(self): pass def test_raise(self): # 須要保證division傳遞了1,0兩個參數,必定會拋出異常,且被Exception捕獲 self.assertRaises(Exception, division, 1, 0) def tearDown(self): pass # 主函數 if __name__ == '__main__': main()
assertRaises(exception, callable, *args,**kwds)
斷言方法,參數exception是待驗證的異常類型,參數callable是待驗證的方法,*args和kwds是待驗證的方法參數。assertRaises()方法主要用於驗證異常測試,在調用待測試函數callable時,在傳入相應的測試數據後,若是測試經過則代表待測試函數拋出了預期的異常,若是報錯則代表測試函數沒有引起相應異常。AssertionError:Exception not raised by division
from unittest import TestCase from unittest import main def division(a, b): return a / b class MyTest(TestCase): def setUp(self): pass def test_raise(self): # 經過正則表達式'by zero' 匹配除零異常 self.assertRaisesRegex(Exception, "by zero", division, 1, 0) def tearDown(self): pass # 主函數 if __name__ == '__main__': main()
assertRaises()
變成了assertRaisesRegexp(exception, regexp, callable, *args, **kwds)
方法,assertRaisesRegexp()
方法比assertRaises()
方法多了一個regexp參數,是一個正則表達式對象。該方法使用正則表達式方式來匹配異常斷言,若是捕獲到了匹配正則表達式的異常則運行成功,不然報錯,經過正則表達式捕獲異常能更加靈活和適用更多的場景;參考:https://www.9xkd.com/user/plan-view.html?id=1932068715正則表達式