我通过pytest
. 对于我使用的覆盖范围coverage.py
。
在我的一个单元测试中,我运行一个函数 viamultirpocessing
并且覆盖率不反映运行 via 的函数multirpocessing
,但断言有效。这就是我要解决的问题。
测试看起来像这样:
import time
import multiprocessing
def test_a_while_loop():
# Start through multiprocessing in order to have a timeout.
p = multiprocessing.Process(
target=foo
name="Foo",
)
try:
p.start()
# my timeout
time.sleep(10)
p.terminate()
finally:
# Cleanup.
p.join()
# Asserts below
...
要运行测试并查看覆盖率,我在 Ubuntu 中使用以下命令:
coverage run --concurrency=multiprocessing -m pytest my_project/
coverage combine
coverage report
在文档中提供有关如何做以使覆盖正确地考虑多处理的指导(此处)。所以我设置了一个.coveragerc
这样的:
[run]
concurrency = multiprocessing
[report]
show_missing = true
而且sitecustomize.py
看起来像这样:
import coverage
coverage.process_startup()
尽管如此,上述贯穿的函数multiprocessing
仍然没有计入覆盖范围。
我做错了什么或错过了什么?
PS这似乎是一个类似的问题,但是它并没有再次解决我的问题:(