Python單元測試框架——unittest


一、Pyhon工作原理—— 核心概念:test case, testsuite, TestLoder,TextTestRunner,TextTestResult, test fixture

TestCase(測試用例): 所有測試用例的基類,它是軟件 測試中最基本的組成單元。

                   一個test case就是一個測試用例,是一個完整的測試流程,包括測試前環境的搭建setUp,執行測試代碼(run),以及測試后環境的還原(tearDown)。測試用例是一個完整的測試單元,可以對某一問題進行驗證。

TestSuite(測試套件):多個測試用例test case集合就是TestSuite,TestSuite可以嵌套TestSuite

TestLoder:是用來加載 TestCase到TestSuite中,其中有幾個loadTestsFrom_()方法,就是從各個地方尋找TestCase,創建他們的實例,然后add到TestSuite中,再返回一個TestSuite實例

TextTestRunner:是來執行測試用例的,其中的run(test)會執行TestSuite/TestCase中的run(result)方法。

 TextTestResult:測試結果會保存到TextTestResult實例中,包括運行了多少用例,成功與失敗多少等信息

TestFixture:又叫測試腳手,測試代碼的運行環境,指測試准備前和執行后要做的工作,包括setUp和tearDown方法

二、測試流程:

1. 寫好TestCase:一個class繼承unittest.TestCase,就是一個測試測試用例,其中有多個以test開頭的方法,那么 每一個這樣的,在load的時候會生成一個TestCase實例。如果一個class中有四個test開頭的方法,最后load到suite中時則有四個測試用例

2. 由TestLoder加載TestCase到TestSuite

3.然后由TextTestRunner來運行TestSuite,運行的結果保存在TextTestResult中。

說明:a:通過命令行或者unittest.main()執行時,main會調用TextTestRunner中的run來執行,或者可以直接通過TextTestRunner來執行用例

b:Runner執行時,默認將結果輸出到控制台,我們可以設置其輸出到文件,在文件中查看 結果,也可以通過HTMLTestRunner將結果輸出到HTML)

三、unittest實例:

1.准備待測方法:

mathfunc.py

2. 為以上方法寫測試:

這就是一個簡單的測試,有幾點需要說明的:

       a:在第一行給出了每一個用例執行的結果的標識,成功是 .,失敗是 F,出錯是 E,跳過是 S。從上面也可以看出,測試的執行跟方法的順序沒有關系,test_divide寫在了第4個,但是卻是第2個執行的。

        b:每個測試方法均以 test 開頭,否則是不被unittest識別的。

        c:在unittest.main()中加 verbosity 參數可以控制輸出的錯誤報告的詳細程度,默認是 1,如果設為 0,則不輸出每一用例的執行結果,即沒有上面的結果中的第1行;如果設為 2,則輸出詳細的執行結果

3.組織TestSuite

        a:確定測試用例的順序,哪個先執行哪個后執行?

         b:如果測試文件有多個,怎么進行組織?

TestLoder加載TestCase幾種方法

4. 生成結果到文件:

5. test fixture——setUp(),tearDown()方法

setUp() 和 tearDown() 兩個方法(其實是重寫了TestCase的這兩個方法),這兩個方法在每個測試方法執行前以及執行后執行一次,setUp用來為測試准備環境,tearDown用來清理環境,已備之后的測試。

 

class TestMathFunc(unittest.TestCase):

# setUp 和 tearDown方法會在每個測試方法執行前及執行后執行一次,setUp用來為測試准備環境,tearDown用來清理環境已備之后的測試
def setUp(self):
print 'do something before test.prepare environment'

def tearDown(self):
print 'do something after test.clean up'
如果想要在所有case執行之前准備一次環境,並在所有case執行結束之后再清理環境,我們可以用 setUpClass() 與tearDownClass():
class TestMathFuncTwo(unittest.TestCase):

#如果想要在所有case執行之前准備一次環境,並在所有case執行結束后再清理環境,我們可以用setUpClass()與tearDownClass(),注意:@classmethod必須加,否則報錯
@classmethod
def setUpClass(cls):
print 'This setUpClass() method only called once'

@classmethod
def tearDownClass(cls):
print 'This tearDownClass() method only called once too'
6. 跳過某個case

7. 用HTMLTestRunner輸出HTML報告

HTMLTestRunner是一個第三方的unittest HTML報告庫,首先我們下載HTMLTestRunner.py,並放到當前目錄下,或者你的’C:\Python27\Lib’下,就可以導入運行了

ps:本文有部分內容摘自網絡,鏈接:http://blog.csdn.net/huilan_same/article/details/52944782

 
       


免責聲明!

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



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