簡體   English   中英

如何從coverage.py中排除文件?

[英]How to exclude a file from coverage.py?

我使用nosetestcoverage.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM