python接口自動化(二十三)--unittest斷言——上(詳解)


簡介

  在測試用例中,執行完測試用例后,最后一步是判斷測試結果是 pass 還是 fail,自動化測試腳本里面一般把這種生成測試結果的方法稱為斷言(assert)。用 unittest 組件測試用例的時候,斷言的方法還是很多的,下面介紹幾種常用的斷

言方法:assertEqual、assertIn、assertTrue。想了解更多可以點擊 傳送門 看一下最后的小結有大致介紹。

  unittest斷言計划是分上、中、下三篇有簡單到復雜的給小伙伴們介紹一下,填補一下這部分的空白。

基本斷言方法

基本的斷言方法提供了測試結果是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

簡單的case

1、實例,寫了四個測試用例,其中第四個是失敗的

2、運行結果(python3)

 

python2

3、在python2中執行的結果,中文編碼不對,沒正常顯示中文,遇到這種情況,可以自定義異常輸出,python3正常。有時候也可以根據實際需要采用自定義異常輸出,要靈活掌握。

參考代碼

 1 # coding=utf-8
 2 #1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 #2.注釋:包括記錄創建時間,創建人,項目名稱。
 5 '''
 6 Created on 2019-4-25
 7 @author: 北京-宏哥
 8 Project:學習和使用unittest框架編寫斷言
 9 '''
10 #3.導入unittest模塊
11 import unittest
12 #4.編寫測試用例和斷言
13 
14 class Test(unittest.TestCase):
15     def test01(self):
16         '''判斷 a == b '''
17         a = 1
18         b = 1
19         self.assertEqual(a, b)
20     def test02(self):
21         '''判斷 a in b '''
22         a = "hello hongge"
23         b = "hello hongge and world!"
24         self.assertIn(a, b)
25 
26     def test03(self):
27         '''判斷 a is True '''
28         a = True
29         self.assertTrue(a)
30 
31     def test04(self):
32         '''失敗案例'''
33         a = "北京-宏哥"
34         b = "hongge"
35         self.assertEqual(a, b)
36 
37 if __name__ == "__main__":
38     unittest.main()

自定義異常輸出

1、以 assertEqual 為例分析,在pycharm中通過ctrl(command)+🖱️左鍵我們可以定位到方法的位置:

python3

python2

2、python2翻譯:如果兩個對象不能相等,就返回失敗,相當於 return: first==second

      python3如果你斷言的 語句正確 則什么反應都沒有,但是如果你出錯之后 就會報出    AssertionError 並且錯誤可以自己填寫。

3、這里除了相比較的兩個參數 first 和 second,還有第三個參數 msg=None,這個 msg 參數就是遇到異常后自定義輸出信息

4、參考代碼

# coding=utf-8
#1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

#2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2019-4-25
@author: 北京-宏哥
Project:學習和使用unittest框架編寫斷言
'''
#3.導入unittest模塊
import unittest
#4.編寫測試用例和斷言

class Test(unittest.TestCase):
    def test01(self):
        '''判斷 a == b '''
        a = 1
        b = 1
        self.assertEqual(a, b)
    def test02(self):
        '''判斷 a in b '''
        a = "hello hongge"
        b = "hello hongge and world!"
        self.assertIn(a, b)

    def test03(self):
        '''判斷 a is True '''
        a = True
        self.assertTrue(a)

    def test04(self):
        '''失敗案例'''
        a = "北京-宏哥"
        b = "hongge"
        self.assertEqual(a, b,msg='失敗原因: %s!=%s'%(a,b))

if __name__ == "__main__":
    unittest.main()

小結

  unittest斷言開篇就介紹這里,另外大家也不要糾結python2或者python3,建議小伙伴們使用python3,因為python2到2020年官方就好像不會維護了!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM