有没有办法在测试覆盖范围内排除私有方法?
在我的.coveragerc中我尝试过:
[report]
exclude_lines =
__*
但它似乎排除了诸如long_method_name
在没有列出所有方法的情况下,有没有办法呢?
修改
我希望在测试中将__add__
等具有simillar语法的方法设为 。
答案 0 :(得分:4)
来自docs:
class MyObject(object):
def __init__(self):
blah1()
blah2()
def __repr__(self): # pragma: no cover
return "<MyObject>"
使用一个配置选项排除所有私有方法对IMO没有意义 - 如果查看覆盖率结果,则会导致错误的假设。
答案 1 :(得分:2)
您的正则表达式为__*
,它与一个或多个下划线匹配,因此它会排除任何包含下划线的行。这不是你想要的。
这应该可以排除以双下划线开头的函数的任何函数定义:
[report]
exclude_lines =
def __
这对我来说似乎是一个坏主意。您需要知道这些功能是否经过适当测试。它们是从您的公共API调用的:如果您没有测量他们调用的函数的覆盖范围,您如何声称您的公共API函数已经过全面测试?
要排除私有方法,而不是特殊方法,您可以尝试更精细的正则表达式:
[report]
exclude_lines =
def __[^(]*[^_][(]
但这有点疯狂......