斷言assert總結

2021-07-16 08:54:58 字數 1241 閱讀 8042

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 表示...