[英]How to exclude a file from coverage.py?
我使用nosetest
的coverage.py
插件。 是否有可能從覆蓋率報告中排除整個文件或文件夾? 我的用例是在我的項目文件夾中有一個外部庫,顯然我的測試套件沒有涵蓋。
如果要排除代碼塊,請使用# pragma: no cover
注釋。
一些例子:
def foo(self, param): # pragma: no cover <--
""" Exclude an entire function """
# None of this will be included in coverage
def bar(self, param):
""" Exclude a branch of code """
if param:
# This part is included in code coverage
do_this()
else: # pragma: no cover <--
# Not included in coverage
other_thing()
更多在文檔中。
是的,他們在docs中有相當廣泛的支持。
運行代碼時,coverage run 命令將默認測量所有代碼,除非它是 Python 標准庫的一部分。
您可以使用 --source 命令行開關或 [run] 源配置值指定要測量的源。 該值是目錄或包名稱的列表。 如果指定,則僅測量這些目錄或包中的源。 指定源選項還可以使coverage.py 報告未執行的文件,因為它可以在源樹中搜索根本沒有測量的文件。 只考慮可導入的文件(位於樹根的文件,或在具有_init _.py 文件的目錄中的文件),並且名稱中帶有不尋常標點符號的文件將被跳過(假定它們是由文本編寫的暫存文件編輯)。
您可以使用 --include 和 --omit 開關(或 [run] include 和 [run] omit 配置值)進一步微調 coverage.py 的注意力。 --include 是文件名模式的列表。 如果指定,則僅測量與這些模式匹配的文件。 --omit 也是文件名模式的列表,指定不測量的文件。 如果同時指定了 include 和 omit,則首先將文件集減少為僅與包含模式匹配的文件,然后從集中刪除與省略模式匹配的所有文件。
包含和省略文件名模式遵循典型的 shell 語法:* 匹配任意數量的字符和 ? 匹配單個字符。 以通配符開頭的模式按原樣使用,其他模式相對於當前目錄進行解釋。
源值、包含值和省略值共同確定要測量的源。
另一種解決方案是將要排除的文件或文件夾放在不是包的目錄中(即其中沒有__init__
文件)。 覆蓋范圍將不會覆蓋它。
文檔說:
只會考慮可導入的文件(位於樹根目錄或具有
__init__.py
文件的目錄中的文件)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.