gpt4 book ai didi

python - 如何测试或模拟 "if __name__ == ' __main_ _'"内容

转载 作者:IT老高 更新时间:2023-10-28 21:45:00 48 4
gpt4 key购买 nike

假设我有一个包含以下内容的模块:

def main():
pass

if __name__ == "__main__":
main()

我想为下半部分编写一个单元测试(我想实现 100% 的覆盖率)。我发现了执行 import/__name__ 设置机制的 runpy 内置模块,但我不知道如何模拟或以其他方式检查 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__'你可以写一个覆盖配置文件并在section报告中添加:

[report]

exclude_lines =
if __name__ == .__main__.:

关于覆盖配置文件的更多信息可以找到here .

希望这能有所帮助。

关于python - 如何测试或模拟 "if __name__ == ' __main_ _'"内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850268/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com