gpt4 book ai didi

Python 代码覆盖率和多处理

转载 作者:太空狗 更新时间:2023-10-29 17:07:17 24 4
gpt4 key购买 nike

我使用 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 之外,这工作得很好.不跟踪工作池或子进程执行的代码。

是否有可能同时跟踪多处理代码?我缺少任何特定选项吗?是否可以将包装器添加到多处理库以在每次产生新进程时开始覆盖?

编辑:

我(和 jonrsharpe,还有 :-) 找到了一个 monkey-patch for multiprocessing .

但是,这对我不起作用,我的 Tracis-CI构建几乎在开始后立即被杀死。我在我的本地机器上检查了这个问题,显然将补丁添加到 multiprocessing 破坏了我的内存。通过此修复,占用内存远少于 1GB 的测试需要超过 16GB。

EDIT2:

猴子补丁在一个小的修改后确实有效:删除config_file 解析 (config_file=os.environ['COVERAGE_PROCESS_START']) 成功了。这解决了臃肿的内存问题。因此,相应的行简单地变成:

cov = coverage(data_suffix=True)

最佳答案

Coverage 4.0 包含一个命令行选项 --concurrency=multiprocessing 来处理这个问题。之后您必须使用coverage combine。例如,如果您的测试在 regression_tests.py 中,那么您只需在命令行中执行此操作:

coverage run --concurrency=multiprocessing regression_tests.py
coverage combine

关于Python 代码覆盖率和多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28297497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com