python單元測試之unittest框架使用總結

2021-09-19 03:59:33 字數 2101 閱讀 9024

一、什麼是單元測試

單元測試是用來對乙個模組、乙個函式或者乙個類來進行正確性檢驗的測試工作。

比如對於函式abs(),我們可以編寫的測試用例為:

(1)輸入正數,比如1、1.2、0.99,期待返回值與輸入相同

(2)輸入複數,比如-1、-1.2、-0.99,期待返回值與輸入相反

(3)輸入0,期待返回0

(4)輸入非數值型別,比如none、、{}、期待丟擲typeerror

把上面這些測試用例放到乙個測試模組裡,就是乙個完整的單元測試

二、unittest工作原理

unittest中最核心的四部分是:testcase,testsuite,testrunner,testfixture

(1)乙個testcase的例項就是乙個測試用例。測試用例就是指乙個完整的測試流程,包括測試前準備環境的搭建(setup),執行測試**(run),以及測試後環境的還原(teardown)。元測試(unit test)的本質也就在這裡,乙個測試用例是乙個完整的測試單元,通過執行這個測試單元,可以對某乙個問題進行驗證。

(2)而多個測試用例集合在一起,就是testsuite,而且testsuite也可以巢狀testsuite。

(3)testloader是用來載入testcase到testsuite中的。

(4)texttestrunner是來執行測試用例的,其中的run(test)會執行testsuite/testcase中的run(result)方法

(5)測試的結果會儲存到texttestresult例項中,包括執行了多少測試用例,成功了多少,失敗了多少等資訊。

綜上,整個流程就是首先要寫好testcase,然後由testloader載入testcase到testsuite,然後由texttestrunner來執行testsuite,執行的結果儲存在texttestresult中,整個過程整合在unittest.main模組中。

三、python unitest框架中 setup、setupclass、teardown、teardownclass的區別

python unitest單元測試框架中,有幾個特殊的情況如下:

setup():每個測試方法執行前執行,測試前的初始化工作。一條用例執行一次,若n次用例就執行n次,根據用例的數量來定。

setupclass():所有的測試方法執行前執行,為單元測試做前期準備,但必須使用@classmethod裝飾器進行修飾,整個測試過程中只執行一次。

teardown():每個測試方法執行結束後執行,測試後的清理工作。一條用例執行一次,若n次用例就執行n次。

teardownclass():所有的測試方法執行結束後執行,為單元測試做後期清理工作,但必須使用@classmethod裝飾器進行修飾,整個測試過程中只執行一次。

四、總結

1、unittest是python自帶的單元測試框架,我們可以用其來作為我們自動化測試框架的用例組織執行框架。

2、unittest的流程:寫好testcase,然後由testloader載入testcase到testsuite,然後由texttestrunner來執行testsuite,執行的結果儲存在texttestresult中,我們通過命令列或者unittest.main()執行時,main會呼叫texttestrunner中的run來執行,或者我們可以直接通過texttestrunner來執行用例。

3、乙個class繼承unittest.testcase即是乙個testcase,其中以 test 開頭的方法在load時被載入為乙個真正的testcase。

4、verbosity引數可以控制執行結果的輸出,0 是簡單報告、1 是一般報告、2 是詳細報告。

5、可以通過addtest和addtests向suite中新增case或suite,可以用testloader的loadtestsfrom__()方法。

6、用 setup()、teardown()、setupclass()以及 teardownclass()可以在用例執行前布置環境,以及在用例執行後清理環境

7、我們可以通過skip,skipif,skipunless裝飾器跳過某個case,或者用testcase.skiptest方法。

8、引數中加stream,可以將報告輸出到檔案:可以用texttestrunner輸出txt報告,以及可以用htmltestrunner輸出html報告。

單元測試之Django單元測試

每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...

python單元測試之unittest

現在單元測試也要慢慢作正規了。我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。參考以下貼子作了一次python,最終我可是要用django和mock的喲。note1 什麼是測試用例?答 測試用例是乙個完整的測試流程...

Python之單元測試unittest

unittest中最核心的四部分是 testcase,testsuite,testrunner,testfixture 1 乙個testcase的例項就是乙個測試用例。測試用例就是指乙個完整的測試流程,包括測試前準備環境的搭建 setup 執行測試 run 以及測試後環境的還原 teardown 單...