8 個很棒的 pytest 外掛

2018-11-19 11:41:00

Python 測試工具最好的一方面是其強大的生態系統。這裡列出了八個最好的外掛。

我們是 pytest 的忠實粉絲,並將其作為工作和開源專案的預設 Python 測試工具。在本月的 Python 專欄中,我們分享了為什麼我們喜歡 pytest 以及一些讓 pytest 測試工作更有趣的外掛。

什麼是 pytest?

正如該工具的網站所說,“pytest 框架可以輕鬆地編寫小型測試,也能進行擴充套件以支援應用和庫的複雜功能測試。”

pytest 允許你在任何名為 test_*.py 的檔案中定義測試,並將其定義為以 test_* 開頭的函數。然後,pytest 將在整個專案中查詢所有測試,並在控制台中執行 pytest 時自動執行這些測試。pytest 接受標誌和引數,它們可以在測試執行器停止時更改,這些包含如何輸出結果,執行哪些測試以及輸出中包含哪些資訊。它還包括一個 set_trace() 函數,它可以進入到你的測試中。它會暫停您的測試, 並允許你與變數進行互動,不然你只能在終端中“四處翻弄”來偵錯你的專案。

pytest 最好的一方面是其強大的外掛生態系統。因為 pytest 是一個非常流行的測試庫,所以多年來建立了許多外掛來擴充套件、客製化和增強其功能。這八個外掛是我們的最愛。

8 個很棒的外掛

1、pytest-sugar

pytest-sugar 改變了 pytest 的預設外觀,新增了一個進度條,並立即顯示失敗的測試。它不需要設定,只需 pip install pytest-sugar,用 pytest 執行測試,來享受更漂亮、更有用的輸出。

2、pytest-cov

pytest-covpytest 中增加了覆蓋率支援,來顯示哪些程式碼行已經測試過,哪些還沒有。它還將包括專案的測試覆蓋率。

3、pytest-picked

pytest-picked 對你已經修改但尚未提交 git 的程式碼執行測試。安裝庫並執行 pytest --picked 來僅測試自上次提交後已更改的檔案。

4、pytest-instafail

pytest-instafail 修改 pytest 的預設行為來立即顯示失敗和錯誤,而不是等到 pytest 完成所有測試。

5、pytest-tldr

一個全新的 pytest 外掛,可以將輸出限制為你需要的東西。pytest-tldrtldr 代表 “too long, didn’t read” —— 太長,不想讀),就像 pytest-sugar 一樣,除基本安裝外不需要設定。不像 pytest 的預設輸出那麼詳細,pytest-tldr 將預設輸出限制為失敗測試的回溯資訊,並忽略了一些令人討厭的顏色編碼。新增 -v 標誌會為喜歡它的人返回更詳細的輸出。

6、pytest-xdist

pytest-xdist 允許你通過 -n 標誌並行執行多個測試:例如,pytest -n 2 將在兩個 CPU 上執行你的測試。這可以顯著加快你的測試速度。它還包括 --looponfail 標誌,它將自動重新執行你的失敗測試。

7、pytest-django

pytest-django 為 Django 應用和專案新增了 pytest 支援。具體來說,pytest-django 引入了使用 pytest fixture 測試 Django 專案的能力,而省略了匯入 unittest 和複製/貼上其他樣板測試程式碼的需要,並且比標準的 Django 測試套件執行得更快。

8、django-test-plus

django-test-plus 並不是專門為 pytest 開發,但它現在支援 pytest。它包含自己的 TestCase 類,你的測試可以繼承該類,並使你能夠使用較少的按鍵來輸出頻繁的測試案例,例如檢查特定的 HTTP 錯誤程式碼。

我們上面提到的庫絕不是你擴充套件 pytest 的唯一選擇。有用的 pytest 外掛的前景是廣闊的。檢視 pytest 外掛相容性頁面來自行探索。你最喜歡哪些外掛?