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