如何测试__name__== 是否"__main__"以增加覆盖范围



我是pytest和测试的新手。我有一个简单的程序,比如hi.py

def foo():
print('hello world')
def bar():
print('hello python')
if __name__ == "__main__":
foo()
bar()

我可以像一样运行上面的程序

python3 hi.py

我在test_hi.py中有几个测试用例,如下面的

import pytest
def test_foo()
pass
def test_bar()
pass

为了增加代码覆盖率,我还想将其测试为python3 hi.py,即如果采用__name__==__main__:的方式。我不知道如何使用test_hi.py中的测试用例来完成它。请帮忙。谢谢

我正在使用pytest 测试模块

python -m pytest --cov=hi.py

好的,所以我为我的问题找到的一个解决方案是免除if语句并实现100%覆盖。要做到这一点,我必须在if语句后面添加# pragma: no cover,如下所示。

if __name__ == "__main__":      # pragma: no cover
foo()
bar()

注释将告诉pytest跳过if语句,当您运行以下命令时,我可以获得100%的覆盖率

python -m pytest --cov=project

然而,它跳过了声明,我想报道它,而不是跳过它

我的代码覆盖率理论是,必须具有100%的覆盖率。除非你不能,然后你必须有0%的覆盖率。

您应该将源文件拆分为两个不同的文件夹。一个文件夹被测试覆盖并达到100%,另一个文件夹中的文件从未被测试,覆盖率为0%。

零覆盖率文件的一个例子是:

from hi import foo, bar
if __name__ == "__main__":
foo()
bar()

相关内容

最新更新