Nose是Python的一個(gè)第三方單元測(cè)試框架,定位是“帶插件的Unittest”,只要名稱匹配一定的條件,都會(huì)被自動(dòng)識(shí)別為測(cè)試用例。為了兼容Unittest,所有的基于Unitest編寫的測(cè)試用例,也會(huì)被Nose自動(dòng)識(shí)別。
比如說,不僅用例的編寫方式可以繼承Unittest.TestCase的測(cè)試類,還可以編寫成沒有繼承的測(cè)試類,同時(shí)Nose也支持定義函數(shù)來作為測(cè)試,而且支持Unittest所支持的用例發(fā)現(xiàn)和執(zhí)行能力。
更不要提Nose的繼任者Nose2。
Nose2的主要目的是擴(kuò)展Python的標(biāo)準(zhǔn)單元測(cè)試庫Unittest,讓編寫和運(yùn)行測(cè)試用例變得更容易。提供豐富的插件,例如測(cè)試用例加載器、覆蓋度報(bào)告生成器、并行測(cè)試等內(nèi)置插件和第三方插件,讓單元測(cè)試變得更加完善。
它們有很多相同點(diǎn),比如都兼容Unittest,支持使用函數(shù)作為測(cè)試用例、支持子測(cè)試、擁有插件體系等等。但也有很多不同點(diǎn),比如Nose2不支持Nose所支持的所有測(cè)試用例項(xiàng)目結(jié)構(gòu)、不支持包級(jí)別的測(cè)試前置和清理函數(shù)等等。
但Nose和Nose2在用例編寫、測(cè)試夾具、子測(cè)試上做出改進(jìn),已經(jīng)能讓日常用例編寫工作變得更加容易和靈活。同時(shí)又引入插件體系,進(jìn)一步將單元測(cè)試框架的能力提升了一個(gè)大大的臺(tái)階,這讓很多在基礎(chǔ)測(cè)試功能之上的高階功能的實(shí)現(xiàn)和共享成為了可能,因此眾多開發(fā)者對(duì)它們情有獨(dú)鐘。
學(xué)習(xí)建議
綜上對(duì)比和歸納總結(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的第三方單元測(cè)試框架,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://madgrindclothing.com/