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 "", line 1, in
assertionerror
4.那什麼時候應該使用assert?
1)防禦型的程式設計
2)執行時檢查程式邏輯
3)檢查約定
4)程式常量
5)檢查文件
6.下面是建議不要用斷言的場景:
1)不要用它測試使用者提供的資料
2)不要用斷言來檢查你覺得在你的程式的常規使用時會出錯的地方。斷言是用來檢查非常罕見的問題。你的使用者不應該看到任何斷言錯誤,如果他們看到了,這是乙個bug,修復它。
3)有的情況下,不用斷言是因為它比精確的檢查要短,它不應該是懶碼農的偷懶方式。
4)不要用它來檢查對公共庫的輸入引數,因為它不能控制呼叫者,所以不能保證呼叫者會不會打破雙方的約定。
5)不要為你覺得可以恢復的錯誤用斷言。換句話說,不用改在產品**裡捕捉到斷言錯誤。
6)不要用太多斷言以至於讓**很晦澀。
assert 斷言用法總結
include void assert int expression assert的作用是現計算表示式 expression 如果其值為假 即為0 那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。請看下面的程式清單badptr.c include include i...
assert(斷言)用法
斷言語句是將除錯斷言插入到程式中的一種方便方法。1.用法 assert condition讓程式來測試condition,如果condition為false就會生成乙個assertionerror。相當於 if not condition raise assertionerror 2.示例 asse...
斷言(assert) 學習
在我學習程式設計時,我一直認為斷言 assert 是個報錯函式,事實上,它居然是個巨集,並且作用並非 報錯 在經過對其進行一定了解之後,對其作用及用法有了一定的了解,斷言assert是定義在assert.h中的 巨集 只在debug版本起作用,而在release版本不起作用。用法 assert 表示...