異常處理

今天學習的是對測試中的異常進行捕獲,主要用到了兩個方法,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()
  • 代碼中定義了一個division除法函數,而後在MyTest類中定義了測試用例test_raise(),在這個測試用例中用到了assertRaises(exception, callable, *args,**kwds)斷言方法,參數exception是待驗證的異常類型,參數callable是待驗證的方法,*args和kwds是待驗證的方法參數。assertRaises()方法主要用於驗證異常測試,在調用待測試函數callable時,在傳入相應的測試數據後,若是測試經過則代表待測試函數拋出了預期的異常,若是報錯則代表測試函數沒有引起相應異常。
  • 實例中咱們給定的待驗證方法的參數是1和0,1除以0不成立,知足待驗證參數exception,因此執行代碼不會引起異常。若是咱們把0換成其餘數字,則會報異常: 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正則表達式

相關文章
相關標籤/搜索