前言
Python unintest單元測試架構提供了一整套内置的斷言方法
- 如果斷言失敗,則抛出一個AssertionError,并辨別該測試為失敗狀态
- 如果異常,則當做錯誤來處理
- 注意:以上兩種方式的差別
- 如果成功,則辨別該測試為成功狀态
下面我們看下在unittest架構中定義了哪幾類斷言方法:
- 基本的Boolean斷言,即:要麼True,要麼False的驗證;
- 簡單比較斷言,例如比較a,b兩個變量的值;
- 複雜斷言;
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,同時報錯資訊傳回具體的不同的地方 |