概觀

文件

Documentation Status

測試

GitHub Actions Status

套件

PyPI Package latest release conda-forge PyPI Wheel Supported versions Supported implementations Commits since latest release

此外掛程式會產生覆蓋率報告。與僅使用 coverage run 相比,此外掛程式多了以下功能:

  • 子程序支援:您可以在子程序分岔或執行程式碼,而且會在不產生任何錯誤的情況下受到涵蓋。

  • Xdist 支援:您可以使用 pytest-xdist 的所有功能,而且仍然可以獲得涵蓋率。

  • 一致的 pytest 行為。如果您執行 coverage run -m pytest,您會有稍微不同的 sys.path(CWD 會在其中,這與執行 pytest 時不同)。

涵蓋率套件中提供的所有功能都應該適用,可以透過 pytest-cov 的命令列選項或透過涵蓋率的組態檔。

  • 免費軟體:MIT 授權

安裝

使用 pip 安裝

pip install pytest-cov

針對分散式測試支援,請安裝 pytest-xdist

pip install pytest-xdist

從舊版 pytest-cov 升級

pytest-cov 2.0 正在使用新的 .pth 檔案 (pytest-cov.pth)。您可能需要手動從 site-packages 移除較舊的 init_cov_core.pth,因為它不會自動移除。

解除安裝

使用 pip 解除安裝

pip uninstall pytest-cov

在特定情況下,系統可能會留下一個 .pth 檔案於 site-packages。

  • pytest-cov 2.0 可能會留下一個 pytest-cov.pth,如果您沒有使用輪子 (easy_installsetup.py install 等) 安裝。

  • pytest-cov 1.8 或更舊 會留下一個 init_cov_core.pth

用法

pytest --cov=myproj tests/

會產生類似下列報告

-------------------- coverage: ... ---------------------
Name                 Stmts   Miss  Cover
----------------------------------------
myproj/__init__          2      0   100%
myproj/myproj          257     13    94%
myproj/feature4286      94      7    92%
----------------------------------------
TOTAL                  353     20    94%

文件

涵蓋率資料檔案

資料檔案會在測試開始時被刪除,以確保每個測試運作的資料都是乾淨的。如果您需要組合多個測試運作的涵蓋率,您可以使用 --cov-append 選項,以將此涵蓋率資料附加到來自先前測試運作的涵蓋率資料。

資料檔案會留在測試結束時,以便使用一般的涵蓋率工具來檢閱。

限制

針對分散式測試,工作人員必須已安裝 pytest-cov 套件。這是因為外掛程式必須透過 setuptools 註冊,才能讓 pytest 於工作人員上啟動外掛程式。

對於子處理程序測量環境變數,必須從主處理程序轉移到子處理程序。子處理程序所使用的 Python 必須已安裝 pytest-cov。子處理程序必須執行正常的網站初始化,以便能偵測環境變數以及啟動涵蓋範圍。請參閱子處理程序支援文件,了解詳細運作方式。

安全性

要回報安全漏洞,請使用Tidelift 安全聯絡方式。Tidelift 將協調修復和公開。

致謝

雖然這個外掛程式從頭開始建立,但仍受到其他涵蓋範圍外掛程式(PyTest-coverage [Ross Lawley、James Mills、Holger Krekel] 和 nose-cover [Jason Pellerin])的影響。

Ned Batchelder 提供涵蓋範圍及其結合平行執行涵蓋範圍結果的能力。

Holger Krekel 提供支援分散式測試的 PyTest。

Jason Pellerin 提供 Nose。

Michael Foord 提供 UnitTest2。

無疑地,其他人士也對這些工具有所貢獻。