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