测量跨子流程的覆盖率

Measure coverage across subprocesses

所以,我有一个使用 pytest 测试的项目,并使用 pytest-cov 模块报告覆盖率。

一些代码涉及引导和配置,运行 的规范方式是通过 shell 脚本启动。当前的单元测试使用 subprocess 模块在模拟数据上测试 运行 这个 shell 脚本。我想要针对覆盖范围的代码报告,我正在努力避免

1) 大量修改包装器以支持测试场景。此外,这有执行 2).

的风险

2) 运行 包装器外部的 boostrap 代码(例如通过分叉进程和直接 运行 代码),因为我希望这些测试尽可能真实。

是否有任何(规范的、Pythonic 的)方法将覆盖率集合传播到所有子进程,即使是使用 subprocess.Popen 启动时也是如此?我可以使用 hack 轻松解决问题,所以这不是我要找的东西。

这实际上开箱即用。我认为这不起作用的原因是路径映射 w.r.t。 Docker 卷不正确,因为子进程加载的模块绑定安装在容器中。仅当路径完全匹配时才会报告覆盖率。