1. 程式人生 > 實用技巧 >【4-1】基於Python-unittest運用:unittest介紹及例項

【4-1】基於Python-unittest運用:unittest介紹及例項


該第四章節是最重要的基礎:unittest


1. 什麼是unittest?

unittest是python的標準測試庫,相比於其他測試框架是python目前使用最廣的單元測試框架。

unittest有4個比較重要的概念是test fixture, test case, test suite, test runner

  • test fixture:對一個測試用例環境的搭建和銷燬,是一個fixture。簡單來說就是做一些測試過程中需要準備的東西,其中 setUp() 和 setDown() 是最常用的方法,比如建立臨時的資料庫:那麼可以在 setUp()建立資料庫連線以及進行一些初始化,在setDown()中清除在產生的資料,確定一個TestCase留下一個乾淨的環境。

  • test case:使用者自定義的測試case的基類,一個例項即代表一個測試用例。會依次呼叫:環境搭建setUUp、執行測試程式碼run,以及測試環境的還原tearDown()方法。

  • test suite:測試用例集合,可以通過addTest()方法手動增加Test Case,也可通過TestLoader自動新增Test Case,TestLoader在新增用例時,會沒有順序。同時test suite可以巢狀test suite

  • test runner:執行測試用例的驅動類,可以執行TestCase,也可執行TestSuite。執行後TestCase和Testsuite會自動管理TestResult。


例項:unittest模擬測試

import unittest


class TestCase(unittest.TestCase):

    def setUp(self):
        """每個case執行開始都執行一次"""
        print("第{0}用例開始".format(self.i))

    def tearDown(self):
        """每個case執行結束都執行一次"""
        print("第{0}用例結束".format(self.i))

    # 那如何讓執行此類才執行一次呢?
    @classmethod
    
def setUpClass(cls): print("--類開始--") @classmethod def tearDownClass(cls): print("--類結束--") # 以下為用例 def test_case01(self): print("111") def test_case02(self): print("222") def test_case03(self): print("333") if __name__ == "__main__": unittest.main()

輸出結果為:

--類開始--
用例開始
111
用例結束
用例開始
222
用例結束
用例開始
333
用例結束
--類結束--