我使用coveralls和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之外,这一切都很好。不跟踪工作进程池或子进程执行的代码。在
有没有可能也跟踪多处理代码?我缺少什么特别的选择?是否可以在多进程库中添加包装器,以便在每次生成新进程时开始覆盖?在
编辑:
我(和jornsharpe,也:-)发现了一个monkey-patch for multiprocessing。在
但是,这对我不起作用,我的Tracis-CI构建几乎在启动后就被终止了。我在我的本地计算机上检查了这个问题,很明显,在多处理程序中添加了补丁会破坏我的内存。如果测试占用的内存远小于1GB,则需要超过16GB的内存。在
编辑2:
猴子补丁做了一个小小的修改后就可以工作了:移除
config_file
解析(config_file=os.environ['COVERAGE_PROCESS_START']
)做到了这一点。这解决了内存膨胀的问题。相应地,相应的行简单地变成:
我花了一些时间来确保覆盖率与
multiprocessing.Pool
一起工作,但它始终没有起作用。在我终于做了一个修复,使它工作-如果有人指点我,如果我做错了什么,我会很高兴。在
https://gist.github.com/andreycizov/ee59806a3ac6955c127e511c5e84d2b6
Coverage 4.0包含一个命令行选项
concurrency=multiprocessing
来处理这个问题。之后必须使用coverage combine
。例如,如果您的测试在regression_tests.py
中,那么您只需在命令行执行以下操作:相关问题 更多 >
编程相关推荐