unittest基本原理
整個(gè)平臺(tái)的搭建使用的是python的unittest測(cè)試框架,這里簡(jiǎn)單介紹下unittest模塊的簡(jiǎn)單應(yīng)用封豪。
unittest是python的標(biāo)準(zhǔn)測(cè)試庫(kù)崭捍,相比于其他測(cè)試框架是python目前使用最廣的測(cè)試框架许昨。
unittest有四個(gè)比較重要的概念是test fixture, test case, test suite, test runner, 夯尽。
test fixture:The test fixture is everything we need to have in place to exercise the sut扒磁。簡(jiǎn)單來(lái)說(shuō)就是做一些測(cè)試過(guò)程中需要準(zhǔn)備的東西袱箱,比如創(chuàng)建臨時(shí)的數(shù)據(jù)庫(kù)遏乔,文件和目錄等,其中?setUp()?和?setDown()?是最常用的方法
test case:用戶自定義的測(cè)試case的基類发笔,調(diào)用run()方法盟萨,會(huì)依次調(diào)用setUP方法、執(zhí)行用例的方法了讨、tearDown()方法捻激。
test suite:測(cè)試用例集合,可以通過(guò)addTest()方法手動(dòng)增加Test Case前计,也可通過(guò)TestLoader自動(dòng)添加Test Case胞谭,TestLoader在添加用例時(shí),會(huì)沒(méi)有順序男杈。
test runner:運(yùn)行測(cè)試用例的驅(qū)動(dòng)類丈屹,可以執(zhí)行TestCase,也可執(zhí)行TestSuite。執(zhí)行后TestCase和Testsuite會(huì)自動(dòng)管理TestResult旺垒。
通過(guò)dir(unittest)彩库,我們可以看到unittest全部的屬性和方法,他們的關(guān)系如下圖所示先蒋。
正常調(diào)用unittest的流程是骇钦,TestLoader 自動(dòng)將測(cè)試用例TestCase中加載到TestSuite里,TextTestRunner調(diào)用TestSuite的run方法竞漾,順序執(zhí)行里面的TestCase中以test開(kāi)頭的方法眯搭,并得到測(cè)試結(jié)果TestResult。在執(zhí)行TestCase過(guò)程中畴蹭,先進(jìn)行SetUp()環(huán)境準(zhǔn)備坦仍,執(zhí)行測(cè)試代碼,最后tearDown()進(jìn)行測(cè)試的還原叨襟。
其中TestLoader在加載過(guò)程中繁扎,進(jìn)行添加的TestCase是沒(méi)有順序的。一個(gè)TestCase里如果存在多個(gè)驗(yàn)證方法的話糊闽,會(huì)按照方法中test后方首字母的排序進(jìn)行執(zhí)行梳玫。
可以通過(guò)手動(dòng)調(diào)用TestSuite的addTest、addTests方法來(lái)動(dòng)態(tài)添加TestCase右犹,這樣既可以確定添加用例的執(zhí)行順序提澎,也可避免TestCase中的驗(yàn)證方法一定要用test開(kāi)頭。
在搭建接口測(cè)試平臺(tái)的時(shí)候念链,每新建一個(gè)接口的時(shí)盼忌,會(huì)自動(dòng)生成一個(gè) TestCase,選中運(yùn)行單個(gè)接口時(shí)掂墓,使用TextTestRunner直接調(diào)用單個(gè)TestCase谦纱。運(yùn)行多個(gè)接口時(shí),手動(dòng)給TestSuite添加TestCase君编,供TextTestRunner調(diào)用并生成測(cè)試結(jié)果跨嘉。