을 통해 단위 테스트를 실행합니다 pytest
. 적용 범위를 위해 coverage.py
.
내 단위 테스트 중 하나에서를 통해 함수를 실행 multirpocessing
하고 적용 범위는를 통해 실행되는 함수를 반영하지 않지만 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
은 여전히 적용 범위에 포함되지 않습니다.
내가 뭘 잘못하고 있거나 놓치고 있습니까?
추신 이것은 비슷한 질문처럼 보이지만 내 문제를 다시 해결하지 못합니다. (
다음 두 가지를 수행하여이 문제를 "수정"했습니다.
coverage.py
에서 pytest-cov
.process
를 통해 설명한대로 위에이 코드를 추가합니다 .암호:
try:
from pytest_cov.embed import cleanup_on_sigterm
except ImportError:
pass
else:
cleanup_on_sigterm()
그럼 난 그냥 달려 pytest --cov=my_proj my_proj/
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다