Nose是Python的一個(gè)第三方單元測試框架,定位是“帶插件的Unittest”,只要名稱匹配一定的條件,都會被自動識別為測試用例。為了兼容Unittest,所有的基于Unitest編寫的測試用例,也會被Nose自動識別。
比如說,不僅用例的編寫方式可以繼承Unittest.TestCase的測試類,還可以編寫成沒有繼承的測試類,同時(shí)Nose也支持定義函數(shù)來作為測試,而且支持Unittest所支持的用例發(fā)現(xiàn)和執(zhí)行能力。
更不要提Nose的繼任者Nose2。
Nose2的主要目的是擴(kuò)展Python的標(biāo)準(zhǔn)單元測試庫Unittest,讓編寫和運(yùn)行測試用例變得更容易。提供豐富的插件,例如測試用例加載器、覆蓋度報(bào)告生成器、并行測試等內(nèi)置插件和第三方插件,讓單元測試變得更加完善。
它們有很多相同點(diǎn),比如都兼容Unittest,支持使用函數(shù)作為測試用例、支持子測試、擁有插件體系等等。但也有很多不同點(diǎn),比如Nose2不支持Nose所支持的所有測試用例項(xiàng)目結(jié)構(gòu)、不支持包級別的測試前置和清理函數(shù)等等。
但Nose和Nose2在用例編寫、測試夾具、子測試上做出改進(jìn),已經(jīng)能讓日常用例編寫工作變得更加容易和靈活。同時(shí)又引入插件體系,進(jìn)一步將單元測試框架的能力提升了一個(gè)大大的臺階,這讓很多在基礎(chǔ)測試功能之上的高階功能的實(shí)現(xiàn)和共享成為了可能,因此眾多開發(fā)者對它們情有獨(dú)鐘。
學(xué)習(xí)建議
綜上對比和歸納總結(jié),Unittest做為一個(gè)Python標(biāo)準(zhǔn)庫,和Python版本綁定,非常穩(wěn)定,不用擔(dān)心兼容性的問題。
如果要學(xué)習(xí)一個(gè)單元測試框架,建議從Unittest開始,因?yàn)槟憧梢越佑|到loader、suite、runner這樣的組件,對理解測試框架更有幫助,學(xué)習(xí)好Unittest以后,再學(xué)習(xí)Nose2或者Pytest這樣更高級的框架,能有效提升編程效率。
很多同學(xué)在網(wǎng)上看到一些說Unittest過時(shí)或Unittest不高級的言論就開始批判,顯然是不對的。Unittest是其他Python單元測試框架的基礎(chǔ),沒學(xué)好Unittest,其他的框架勢必也學(xué)不好。
以上內(nèi)容為大家介紹了Python的第三方單元測試框架,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/