天天看點

Unittest之斷言

前言

Python unintest單元測試架構提供了一整套内置的斷言方法

  • 如果斷言失敗,則抛出一個AssertionError,并辨別該測試為失敗狀态
  • 如果異常,則當做錯誤來處理
  • 注意:以上兩種方式的差別
  • 如果成功,則辨別該測試為成功狀态

下面我們看下在unittest架構中定義了哪幾類斷言方法:

  1. 基本的Boolean斷言,即:要麼True,要麼False的驗證;
  2. 簡單比較斷言,例如比較a,b兩個變量的值;
  3. 複雜斷言;

1、基本斷言方法

基本的斷言方法提供了測試結果是True還是False。所有的斷言方法都有一個msg參數,如果指定msg參數的值,則将該資訊作為失敗的錯誤資訊傳回。

序号 斷言文法 斷言描述
1 assertEqual(arg1, arg2, msg=None) 驗證arg1=arg2,不等則fail
2 assertNotEqual(arg1, arg2, msg=None) 驗證arg1 != arg2, 相等則fail
3 assertTrue(expr, msg=None) 驗證expr是true,如果為false,則fail
4 assertFalse(expr,msg=None) 驗證expr是false,如果為true,則fail
5 assertIs(arg1, arg2, msg=None) 驗證arg1、arg2是同一個對象,不是則fail
6 assertIsNot(arg1, arg2, msg=None) 驗證arg1、arg2不是同一個對象,是則fail
7 assertIsNone(expr, msg=None) 驗證expr是None,不是則fail
8 assertIsNotNone(expr, msg=None) 驗證expr不是None,是則fail
9 assertIn(arg1, arg2, msg=None) 驗證arg1是arg2的子串,不是則fail
10 assertNotIn(arg1, arg2, msg=None) 驗證arg1不是arg2的子串,是則fail
11 assertIsInstance(obj, cls, msg=None) 驗證obj是cls的執行個體,不是則fail
12 assertNotIsInstance(obj, cls, msg=None) 驗證obj不是cls的執行個體,是則fail

2、比較斷言

unittest架構提供的第二種斷言類型就是比較斷言

下面我們看下各種比較斷言:

  • assertAlmostEqual (first, second, places = 7, msg = None, delta = None)

驗證first約等于second。

palces: 指定精确到小數點後多少位,預設為7

  • assertNotAlmostEqual (first, second, places, msg, delta)

驗證first不約等于second。

palces: 指定精确到小數點後多少位,預設為7

注: 在上述的兩個函數中,如果delta指定了值,則first和second之間的內插補點必須≤delta

  • assertGreater (first, second, msg = None)
驗證first > second,否則fail
  • assertGreaterEqual (first, second, msg = None)
驗證first ≥ second,否則fail
  • assertLess (first, second, msg = None)
驗證first < second,否則fail
  • assertLessEqual (first, second, msg = None)
驗證first ≤ second,否則fail
  • assertRegexpMatches (text, regexp, msg = None)

驗證正規表達式regexp搜尋比對的文本text。

regexp:通常使用re.search()

  • assertNotRegexpMatches (text, regexp, msg = None)

驗證正規表達式regexp搜尋不比對的文本text。

regexp:通常使用re.search()

3、複雜斷言

序号 斷言文法 斷言描述
1 assertListEqual (list1, list2, msg = None) 驗證清單list1、list2相等,不等則fail,同時報錯資訊傳回具體的不同的地方
2 assertTupleEqual (tuple1, tuple2, msg = None) 驗證元組tuple1、tuple2相等,不等則fail,同時報錯資訊傳回具體的不同的地方
3 assertSetEqual (set1, set2, msg = None) 驗證集合set1、set2相等,不等則fail,同時報錯資訊傳回具體的不同的地方
4 assertDictEqual (expected, actual, msg = None) 驗證字典expected、actual相等,不等則fail,同時報錯資訊傳回具體的不同的地方