一、什麼是單元測試
單元測試是用來對乙個模組、乙個函式或者乙個類來進行正確性檢驗的測試工作。
比如對於函式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 單...