说我有一个包含以下内容的模块:
def main():
pass
if __name__ == "__main__":
main()
我想为下半部分编写一个单元测试(我想实现100%的覆盖率)。我发现执行导入/ 设置机制的runpy内置模块__name__
,但是我不知道如何模拟或检查是否调用了main()函数。
到目前为止,这是我尝试过的:
import runpy
import mock
@mock.patch('foobar.main')
def test_main(self, main):
runpy.run_module('foobar', run_name='__main__')
main.assert_called_once_with()
我将选择另一种替代方法,将其if __name__ == '__main__'
从覆盖率报告中排除,当然,只有在测试中已经具有main()函数的测试用例的情况下,您才能这样做。
至于为什么我选择排除而不是为整个脚本编写新的测试用例的原因是,因为正如我所说的那样,您已经为您的main()
函数准备了一个测试用例,所以您为脚本添加了另一个测试用例(只是为了拥有一个测试用例)。 100%的覆盖率)将只是重复项。
有关如何排除的信息,if __name__ == '__main__'
您可以编写coverage配置文件并添加到部分报告中:
[report]
exclude_lines =
if __name__ == .__main__.:
可以在此处找到有关coverage配置文件的更多信息。
希望这会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句