Python 中 unittest 單元測試框架中概念、作用、運行、用例執行順序、斷言方法、裝飾器


  現在正在使用 unittest 框架,我們來記錄下這個框架的知識點;

  unittest 框架:我們在寫接口用例的時候,會繼承 unittest 當中的 TestCase 的類和方法,私有方法除外,來識別以 test_ 開頭的測試用例,unittest 相當於是一個包,我們來使用包里面的工具;

  什么是自動化測試:寫一段程序去測試另一段程序是否正常的過程

1. 單元測試的概念

  1. 測試不是來測試Java寫的模塊、函數、類
  2. 而是測試代碼輸入和輸出,比對是否正確
  3. 往往單元測試, 是有開發來寫, 用於測試自己寫的模塊、函數、類是否正確
  4. 有的一些單元測試任務, 是由測試人員來寫
  5. 單元測試, 是一個極其強大的測試斷言工具

 

2. 單元測試的作用

對代碼中的函數、類、模擬進行測試
輔助進行接口測試,將預期結果與實際結果進行對

 

3. 運行 unittest 的時候, 我們就調用父類的 main() 方法來運行

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

 

4. unittest 框架中,如何測試多條用例?用例執行順序?如何記錄判斷接口的成功與失敗的用例

如何測試多條用例?

  • 定義一個繼承unittest的測試類, 為每個測試用例定義一個以test.開頭的實例方法

用例執行順序?

  • 以test _開頭的實例方法名稱的ASCII碼數值,從小到大的順序來執行

總結:

  • unittest 框架會把以 test_ 開頭的實例方法識別為用例, 同時會自動執行
  • 如果不是 test_ 開頭的方法, 那么不會被當做用例當自動執行
  • 以test_開頭的實例方法名稱的 ASCII 碼數值,從小到大的順序執行
  • 使用 try..except.... 來記錄成功與失敗的用例總數
  • 測試用例失敗后需要主動拋出異常,增加日志文件,記錄測試用例的結果
  • 執行的總用例數為: 所有以test_開頭的實例方法總數
  • 失敗的用例總數為, 拋出異常的實例方法總數

 

5. unittest 框架中為我們提供了強大的斷言方法,我們來記錄下常用的幾個

self.assertEqual():斷言實際結果與預期結果是否相等;第一個參數為期望值,第二個參數為實際值,第三個參數 msg 為斷言失敗之后的報錯信息
self.assertIn():成員運算第一個表達式是否是第二個表達式的成員
self.assertTrue():斷言這個表達式是否為True,如果為True則成功,不為True則失敗
self.assertIsInstance():斷言第一個是否是第二個參數的實例(判斷是否是list類型)
self.assertIsNone():斷言字段obj數值不為空
self.assertIs():判斷兩個對象是不是同一個對象,id是否一致
self.assertRaises():拋出異常

  

 

import unittest


class TestClass01(unittest.TestCase):

    def test_case01(self):
        # 把鼠標放在實例方法名上來運行用例, 那么只會運行當前一條用例
        # assertTrue 判斷是否為真,isupper(一字歐噴)全部為為大寫
        self.assertTrue("PYTHON".isupper(), msg="測試是否為大寫失敗")

    def test_case02(self):
        A = "北辰"
        B = ["休想", "", "生如花開", "蝶影飛雪", "北辰"]
        # assertIn 判斷 A 是否在 B 中
        self.assertIn(A, B)

    def test_case03(self):
        one_var = [100, 200]
        # 判斷這個函數是否為指定類型 列表
        self.assertIsInstance(one_var, list)


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

6. Python 接口自動化用例執行之前需要使用:setUp、tearDown;setUpClass、tearDownClass

setUp :每個用例執行之前調用
tearDown :每個用例執行之后調用
setUpClass :(譯:賽特阿婆.克拉斯)所有用例執行之前調用 TestCase 中 setUpClass 類方法;需要使用裝飾器來@classmethod
tearDownClass:(譯:緹歐當.克拉斯)所有用例執行之后會調用 TestCase 中 tearDownClass 類方法;需要使用裝飾器來@classmethod

通常我們會使用 setUpClass 、tearDownClass 需要定義為類方法,如果不定義就沒有所有用例之前之后調動的這種特性;

@classmethod

7. Python 中常用的裝飾器

@classmethod:定義為類方法(譯:可拉斯.滿澀的)
@staticmethod:定義為靜態方法(譯:斯達提克.滿澀的)

 

 

*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/shouhu/   謝謝!!******* 


免責聲明!

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



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