1. 程式人生 > 其它 >2-UnitTest斷言

2-UnitTest斷言

1-斷言

概念:就是讓程式代替人為判斷測試程式執行結果是否符合預期結果的過程

2-斷言的使用場景

自動化指令碼在執行的時候一般都是無人值守狀態,我們不知道執行結果是否符合預期結果,所以我們需要讓程式代替人為檢測程式執行的結果是否符合預期結果,這就需要使用斷言;

3-斷言的分類

  1. 基本布林型斷言
  2. 比較斷言
  3. 複雜斷言

基本布林型斷言

序號 斷言方法 斷言描述
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

比較斷言

序號 斷言方法 斷言描述
1 assertAlmostEqual (first, second, places = 7, msg = None, delta = None) 驗證first約等於second。 palces: 指定精確到小數點後多少位,預設為7
2 assertNotAlmostEqual (first, second, places, msg, delta) 驗證first不約等於second。 palces: 指定精確到小數點後多少位,預設為7 注: 在上述的兩個函式中,如果delta指定了值,則first和second之間的差值必須≤delta
3 assertGreater (first, second, msg = None) 驗證first > second,否則fail
4 assertGreaterEqual (first, second, msg = None) 驗證first ≥ second,否則fail
5 assertLess (first, second, msg = None) 驗證first < second,否則fail
6 assertLessEqual (first, second, msg = None) 驗證first ≤ second,否則fail
7 assertRegexpMatches (text, regexp, msg = None) 驗證正則表示式regexp搜尋匹配的文字text。 regexp:通常使用re.search()
8 assertNotRegexpMatches (text, regexp, msg = None) 驗證正則表示式regexp搜尋不匹配的文字text。 regexp:通常使用re.search() 說明:兩個引數進行比較(>、≥、<、≤、約等、不約等)

複雜斷言

序號 斷言方法 斷言描述
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,同時報錯資訊返回具體的不同的地方

案例

點選檢視程式碼
# 主要程式碼...

    # 獲取登陸資訊
    text = self.driver.find_element_by_css_selector(".loginfo").text
    print("登陸成功資訊為:",text)
    try:
        # 使用斷言 判斷text是否包含admin字元
        self.assertIn("admin",text)
    except AssertionError:
      	#報錯的地方進行截圖儲存
        driver.get_screenshot_as_file("../Image/02img.jpg")
        # 丟擲異常
        raise
...