Python測試工具 | 8 個很棒的pytest插件
Python 測試工具***的一方面是其強大的生態(tài)系統(tǒng)。這里列出了八個***的插件。
我們是 pytest 的忠實粉絲,并將其作為工作和開源項目的默認(rèn) Python 測試工具。在本月的 Python 專欄中,我們分享了為什么我們喜歡 pytest
以及一些讓 pytest
測試工作更有趣的插件。
什么是 pytest?
正如該工具的網(wǎng)站所說,“pytest 框架可以輕松地編寫小型測試,也能進行擴展以支持應(yīng)用和庫的復(fù)雜功能測試。”
pytest
允許你在任何名為 test_*.py
的文件中定義測試,并將其定義為以 test_*
開頭的函數(shù)。然后,pytest 將在整個項目中查找所有測試,并在控制臺中運行 pytest
時自動運行這些測試。pytest 接受標(biāo)志和參數(shù),它們可以在測試運行器停止時更改,這些包含如何輸出結(jié)果,運行哪些測試以及輸出中包含哪些信息。它還包括一個 set_trace()
函數(shù),它可以進入到你的測試中。它會暫停您的測試, 并允許你與變量進行交互,不然你只能在終端中“四處翻弄”來調(diào)試你的項目。
pytest
***的一方面是其強大的插件生態(tài)系統(tǒng)。因為 pytest
是一個非常流行的測試庫,所以多年來創(chuàng)建了許多插件來擴展、定制和增強其功能。這八個插件是我們的***。
8 個很棒的插件
1、pytest-sugar
pytest-sugar 改變了 pytest
的默認(rèn)外觀,添加了一個進度條,并立即顯示失敗的測試。它不需要配置,只需 pip install pytest-sugar
,用 pytest
運行測試,來享受更漂亮、更有用的輸出。
2、pytest-cov
pytest-cov 在 pytest
中增加了覆蓋率支持,來顯示哪些代碼行已經(jīng)測試過,哪些還沒有。它還將包括項目的測試覆蓋率。
3、pytest-picked
pytest-picked 對你已經(jīng)修改但尚未提交 git
的代碼運行測試。安裝庫并運行 pytest --picked
來僅測試自上次提交后已更改的文件。
4、pytest-instafail
pytest-instafail 修改 pytest
的默認(rèn)行為來立即顯示失敗和錯誤,而不是等到 pytest
完成所有測試。
5、pytest-tldr
一個全新的 pytest
插件,可以將輸出限制為你需要的東西。pytest-tldr
(tldr
代表 “too long, didn’t read” —— 太長,不想讀),就像 pytest-sugar 一樣,除基本安裝外不需要配置。不像 pytest 的默認(rèn)輸出那么詳細(xì),pytest-tldr 將默認(rèn)輸出限制為失敗測試的回溯信息,并忽略了一些令人討厭的顏色編碼。添加 -v
標(biāo)志會為喜歡它的人返回更詳細(xì)的輸出。
6、pytest-xdist
pytest-xdist 允許你通過 -n
標(biāo)志并行運行多個測試:例如,pytest -n 2
將在兩個 CPU 上運行你的測試。這可以顯著加快你的測試速度。它還包括 --looponfail
標(biāo)志,它將自動重新運行你的失敗測試。
7、pytest-django
pytest-django 為 Django 應(yīng)用和項目添加了 pytest
支持。具體來說,pytest-django
引入了使用 pytest fixture 測試 Django 項目的能力,而省略了導(dǎo)入 unittest
和復(fù)制/粘貼其他樣板測試代碼的需要,并且比標(biāo)準(zhǔn)的 Django 測試套件運行得更快。
8、django-test-plus
django-test-plus 并不是專門為 pytest
開發(fā),但它現(xiàn)在支持 pytest
。它包含自己的 TestCase
類,你的測試可以繼承該類,并使你能夠使用較少的按鍵來輸出頻繁的測試案例,例如檢查特定的 HTTP 錯誤代碼。
我們上面提到的庫絕不是你擴展 pytest
的唯一選擇。有用的 pytest 插件的前景是廣闊的。查看 pytest 插件兼容性頁面來自行探索。你最喜歡哪些插件?