斷言assert總結

0.Python的assert是用來檢查一個條件,如果它爲真,就不做任何事。如果它爲假,則會拋出AssertError並且包含錯誤信息。assert語句是一種插入調試斷點到程序的一種便捷的方式。

1.使用斷言可以創建更穩定,品質更好且不易於出錯的代碼。當需要在一個值爲FALSE時中斷當前操作的話,可以使用斷言。單元測試必須使用斷言(Junit/JunitX)

2.斷言可以有兩種形式

1.assert Expression1
2.assert Expression1:Expression2

其中Expression1應該總是一個布爾值,Expression2是斷言失敗時輸出的失敗消息的字符串。

如果Expression1爲假,則拋出一個 AssertionError,這是一個錯誤,而不是一個異常,也就是說是一個不可控制異常(unchecked Exception),AssertionError由於是錯誤,所以可以不捕獲,但不推薦這樣做,因爲那樣會使你的系統進入不穩定狀態。

3.測試程序:

>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AssertionError

4.那什麼時候應該使用assert?
1)防禦型的編程
2)運行時檢查程序邏輯
3)檢查約定
4)程序常量
5)檢查文檔

6.下面是建議不要用斷言的場景:

1)不要用它測試用戶提供的數據
2)不要用斷言來檢查你覺得在你的程序的常規使用時會出錯的地方。斷言是用來檢查非常罕見的問題。你的用戶不應該看到任何斷言錯誤,如果他們看到了,這是一個bug,修復它。
3)有的情況下,不用斷言是因爲它比精確的檢查要短,它不應該是懶碼農的偷懶方式。
4)不要用它來檢查對公共庫的輸入參數,因爲它不能控制調用者,所以不能保證調用者會不會打破雙方的約定。
5)不要爲你覺得可以恢復的錯誤用斷言。換句話說,不用改在產品代碼裏捕捉到斷言錯誤。
6)不要用太多斷言以至於讓代碼很晦澀。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章