您好,登錄后才能下訂單哦!
Python 中有哪些測試框架,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
對于 zope.testing 框架,您會發現 Zope 社區有一些有意思的現象。Zope 社區并不為解決每個問題構建大型工具。而是構建小型的功能有限的工具,這些工具能夠連接在一起。目前,zope.testing 模塊本身實際上根本沒有提供檢測測試的機制!
相反,zope.testing 讓程序員自己尋找每個模塊中需要運行的測試并把它們集中在一個列表中。它在每個測試模塊中只尋找一個東西:test_suite() 函數,這個函數應該返回標準 unittest.TestSuite 類的實例,其中包含模塊定義的測試。
使用 zope.testing 的一些程序員在 test_suite() 函數中手工地創建和維護測試列表。其他程序員通過編寫定制代碼發現已經定義的可用測試。但是,最有意思的方法是使用另一個 Zope 包 z3c.testsetup,它能夠像其他現代 Python 測試框架一樣自動地發現包中的測試。
這一現象再次說明 Zope 程序員傾向于編寫小型代碼塊,然后使用它們構建框架,而不是編寫大型的全面解決方案。z3c.testsetup 包不包含可以選擇測試的命令行界面,也不包含可以顯示測試結果的輸出模塊;它完全依靠 zope.testing 實現這些功能。
實際上,z3c.testsetup 用戶一般不使用 zope.testing 的測試模塊發現功能。相反,他們繞開 zope.testing 的算法。按照它的默認行為只尋找名為 test.py 的模塊,然后在整個源代碼樹中只提供一個采用此名稱的模塊。在最簡單的情況下,他們的 test.py 像下面這樣:
class Category(models.Model): id = models.AutoField('id', primary_key=True) name = models.CharField(maxlength=50) code = models.CharField(maxlength=50) parentCategory = models.ForeignKey('self', 'id', null=True) enable = models.BooleanField() def __str__(self): return self.name class Admin: list_display = ('id', 'name', 'code', 'parentCategory')
這完全不通過 zope.testing 執行測試發現任務,而是依靠Python 測試框架本身提供的更強大的發現機制。可以向 register_all_tests() 函數提供幾個配置選項。詳細信息請參見 z3c.testsetup 文檔,這里只需要介紹它的基本行為。與本文討論的其他框架不同,z3c.testsetup 在默認情況下不關心包中每個 Python 模塊的名稱,而是關注它的內容。
它檢查所有模塊以及包中的所有 .txt 或 .rst 文件,選擇文本中指定了 :Test-Layer: 的文件。然后,它組合模塊中的所有 TestCase 和文本文件中的所有 doctest 部分,形成測試套件。
***注意,Zope 測試框架只支持 UnitTest 實例或 doctest。正如本系列的***篇文章中討論的,更現代的 Python 測試框架還支持一般的 Python 函數作為有效測試。
看完上述內容,你們掌握Python 中有哪些測試框架的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。