我将工作服与coverage.py结合使用来跟踪我的测试脚本的python 代码覆盖率。我使用以下命令:
coverage run --parallel-mode --source=mysource --omit=*/stuff/idont/need.py ./mysource/tests/run_all_tests.py
coverage combine
coveralls --verbose
除了multiprocessing之外,这非常有效。由工作池或子进程执行的代码不会被跟踪。
是否有可能也跟踪多处理代码?我缺少任何特定的选项吗?也许在每次产生新进程时将包装器添加到多处理库以开始覆盖?
编辑:
我(和 jonrsharpe,也 :-) 找到了一个用于 multiprocessing 的猴子补丁。
但是,这对我不起作用,我的Tracis-CI构建几乎在开始后就被杀死了。我在本地机器上检查了问题,显然将补丁添加到多处理会破坏我的记忆。使用此修复程序,占用远少于 1GB 内存的测试需要超过 16GB。
编辑2:
Monkey-patch 在稍作修改后确实可以工作:删除config_file
解析 ( config_file=os.environ['COVERAGE_PROCESS_START']
) 就可以了。这解决了内存膨胀的问题。因此,相应的行简单地变为:
cov = coverage(data_suffix=True)