如何在多次运行Python脚本时获得组合代码覆盖率

如何在多次运行Python脚本时获得组合代码覆盖率,python,code-coverage,python-coverage,Python,Code Coverage,Python Coverage,我有一个python程序,它通过使用不同的输入运行几次,并将输出与参考结果进行比较来进行测试 我想获得所有测试组合的代码覆盖率,这样我就可以看到是否有额外的输入集应该用来获得完整的覆盖率。我看过覆盖率模块,但不知道如何才能做到这一点 有什么线索吗?Ned Batchelder's有一个,这似乎正是您要寻找的。如果在同一台机器上运行,请使用-a选项运行它,该选项可在多个通话中累积覆盖数据 例如: coverage erase coverage run -a <command> [ar

我有一个python程序,它通过使用不同的输入运行几次,并将输出与参考结果进行比较来进行测试

我想获得所有测试组合的代码覆盖率,这样我就可以看到是否有额外的输入集应该用来获得完整的覆盖率。我看过覆盖率模块,但不知道如何才能做到这一点


有什么线索吗?

Ned Batchelder's有一个,这似乎正是您要寻找的。

如果在同一台机器上运行,请使用
-a
选项运行它,该选项可在多个通话中累积覆盖数据

例如:

coverage erase

coverage run -a <command> [arguments, ...]

coverage run -a <command> ... # repeat as many times as needed.

coverage report

coverage html
覆盖率擦除
覆盖率运行-a[参数,…]
覆盖率运行-a…#根据需要重复多次。
覆盖率报告
覆盖率html
文件:


希望这有帮助。

是的,这完全正确。您可以使用它跨多个数据集、跨多个Python版本或多个依赖项选择(例如,不同版本的中间件或支持模块)运行。您可以在一个shell脚本中“编排”多个测试运行,但您可以做得更好:测试运行程序将自动创建原始虚拟环境并在这些环境中运行测试;强烈推荐用于最简单的测试设置之外的任何情况。@opa OP选择此答案,因为它显然对他们有帮助。另一个答案是两年后添加的。我有点不解这为什么会让你这么生气——我很高兴根据友好的建议改进我的答案,但当我被骂时,我真的不想自愿花更多的时间来帮助别人。@opa我没有用这个答案抱怨你的问题。你说得有道理,我从来没有质疑过。我是在抱怨你评论的语气,这是不必要的粗鲁。如果说“你应该在这个答案中包含链接页面的要点,否则如果该页面消失,它将变得无用”或类似的话就足够了。相反,你选择说答案是“糟透了”,不幸的是,OP选择了它,等等,这听起来很有敌意。等我有时间调查一下,我会改进答案。@SvenMarnach你是对的,我的敌意没有产生效果。当我看到有经验的用户犯了同样的错误,导致新用户产生低质量的内容时,我感到特别沮丧。另请参见
coverage combine