【问题标题】:How to exclude the program startup code (__name__ == "__main__") from being included in pytest coverage reports?如何将程序启动代码(__name__ ==“__main__”)排除在 pytest 覆盖率报告中?
【发布时间】:2021-05-04 16:20:07
【问题描述】:

我们的项目中有几个小脚本,它们接受一些命令行参数。例如:

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--branch")
    command_line_args = parser.parse_args()
    if not command_line_args.branch:
        raise Exception
    main(command_line_args.branch)

我们对对此进行单元测试并不真正感兴趣。但是,这会影响我们的覆盖率报告,有没有办法使用 pytest 从单元测试中排除 if __name__ == "__main__"

【问题讨论】:

  • 这与单元测试无关。覆盖是顶部的一层。我相信更新后的标题更好地反映了意图。
  • FWIW,您可能想认识到那里的代码可能存在错误,并且对其进行测试可能很有价值。

标签: python unit-testing pytest code-coverage


【解决方案1】:

您可以添加评论,如下所示:

if __name__ == "__main__":  # pragma: no cover
    parser = argparse.ArgumentParser()    
    ...

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2015-05-22
    • 2018-10-09
    • 1970-01-01
    • 2021-09-27
    • 2019-01-23
    相关资源
    最近更新 更多