排除coverag中的私有方法

2024-10-03 09:19:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在测试覆盖率期间有没有办法排除私有方法?在

在我的保险柜里我试过:

[report]
exclude_lines = 
    __*

但它似乎排除了long_method_name等方法

有没有办法不列出所有的方法?在

编辑

我希望像__add__这样语法与private相似的方法被包括在测试中。在


Tags: 方法namereportadd编辑语法覆盖率private
2条回答

您的regex是__*,它匹配一个或多个下划线,因此它将排除其中有下划线的任何行。这不是你想要的。在

这样可以排除以双下划线开头的函数的任何函数定义:

[report]
exclude_lines = 
    def __

我觉得这是个坏主意。你需要知道这些功能是否经过适当的测试。它们是从您的公共API调用的:如果您不测量它们调用的函数的覆盖率,您怎么能声称您的公共API函数已经过全面测试?在

要排除私有方法,但不排除特殊方法,可以尝试使用更详细的正则表达式:

^{pr2}$

但这有点疯狂。。。在

docs

class MyObject(object):
    def __init__(self):
        blah1()
        blah2()

    def __repr__(self): # pragma: no cover
        return "<MyObject>"

用一个config选项排除所有私有方法在IMO中没有意义-如果查看覆盖率结果,会导致错误的假设。在

相关问题 更多 >