Unittest是Python標(biāo)準(zhǔn)庫中自帶的單元測(cè)試框架,支持自動(dòng)化測(cè)試,測(cè)試用例的初始化和關(guān)閉測(cè)試用例的聚合等功能。
有一些類似于Java中的Junit單元測(cè)試框架,其模塊提供了許多類和方法處理各種測(cè)試工作,能夠完善結(jié)合Selenium、Appium、Request等實(shí)現(xiàn)UI自動(dòng)化與接口自動(dòng)化。
而Unittest的核心組件則是TestCase(測(cè)試用例)、TestFixture(測(cè)試固件)、TestSuite(測(cè)試套件)、和TestRunner(測(cè)試運(yùn)行器)。
其中,一個(gè)完整的測(cè)試流程就是一個(gè)測(cè)試用例,通過一些特定的輸入得到相應(yīng),并對(duì)結(jié)果進(jìn)行校驗(yàn)的過程,所有的用例都是直接繼承于Unittest.TestCase類,TestCase是最小的測(cè)試單元,具有獨(dú)立性。
測(cè)試固件就是在執(zhí)行測(cè)試之前的準(zhǔn)備工作,比如數(shù)據(jù)清理、創(chuàng)建臨時(shí)數(shù)據(jù)庫、目錄、以及開啟某些服務(wù)進(jìn)程。畢竟我們?cè)诰帉憸y(cè)試代碼時(shí),總會(huì)有一些重復(fù)的代碼部分,就好比,當(dāng)我們測(cè)試一個(gè)網(wǎng)站的登錄操作時(shí),簡(jiǎn)單分為三個(gè)用例:賬號(hào)和密碼都正確,賬號(hào)正確密碼錯(cuò)誤,賬號(hào)錯(cuò)誤密碼正確,這三種情況在執(zhí)行用例時(shí)都需要首先訪問系統(tǒng)地址,再輸入賬號(hào)和密碼,點(diǎn)擊登錄操作,完成之后瀏覽器執(zhí)行關(guān)閉操作,我們就可以通過setUp()將訪問地址作為前置條件,通過tearDown()將關(guān)閉瀏覽器作為后置條件,測(cè)試固件就是整合了代碼的公共部分。
測(cè)試套件就是把多個(gè)測(cè)試用例集合到一起。
而測(cè)試運(yùn)行器則是提供測(cè)試用例運(yùn)行環(huán)境,通過run()方法來執(zhí)行測(cè)試用例,并在執(zhí)行完成后將測(cè)試結(jié)果輸出。
了解了這幾個(gè)基本概念之后,再理解起來Unittest就不難了。
學(xué)習(xí)建議
綜上歸納總結(jié),Unittest做為一個(gè)Python標(biāo)準(zhǔn)庫,和Python版本綁定,非常穩(wěn)定,不用擔(dān)心兼容性的問題。
如果要學(xué)習(xí)一個(gè)單元測(cè)試框架,建議從Unittest開始,因?yàn)槟憧梢越佑|到loader、suite、runner這樣的組件,對(duì)理解測(cè)試框架更有幫助,學(xué)習(xí)好Unittest以后,再學(xué)習(xí)Nose2或者Pytest這樣更高級(jí)的框架,能有效提升編程效率。
很多同學(xué)在網(wǎng)上看到一些說Unittest過時(shí)或Unittest不高級(jí)的言論就開始批判,顯然是不對(duì)的。Unittest是其他Python單元測(cè)試框架的基礎(chǔ),沒學(xué)好Unittest,其他的框架勢(shì)必也學(xué)不好。
以上內(nèi)容為大家介紹Python標(biāo)準(zhǔn)庫中自帶的單元測(cè)試框架,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.em-kal.com/