나는 을 coverage.py과 함께 사용하여 테스트 스크립트의 파이썬 코드 범위를 추적합니다. 이 multiprocessing을 제외하고 아주 잘 작동파이썬 코드 커버리지 및 멀티 프로세싱
coverage run --parallel-mode --source=mysource --omit=*/stuff/idont/need.py ./mysource/tests/run_all_tests.py
coverage combine
coveralls --verbose
: 나는 다음과 같은 명령을 사용합니다. 작업자 풀 또는 하위 프로세스에서 실행하는 코드는 추적되지 않습니다.
다중 처리 코드를 추적 할 가능성이 있습니까? 내가 누락 된 특정 옵션? 새 프로세스가 생성 될 때마다 적용을 시작하기 위해 다중 처리 라이브러리에 래퍼를 추가 할 수 있습니까?
편집는 :
내가 (그리고 jonrsharpe는 또한 monkey-patch for multiprocessing을 발견 :-).
그러나 이것은 나를 위해 작동하지 않습니다. 내 Tracis-CI 빌드가 시작 직후 거의 종료됩니다. 로컬 컴퓨터에서 문제를 확인한 후 멀티 프로세싱에 패치를 추가하면 메모리가 손상됩니다. 1GB 미만의 메모리를 사용하는 테스트의 경우이 수정으로 16GB 이상이 필요합니다.
EDIT2
:원숭이 패치는 작은 수정 후 작업을 수행합니다 트릭을 config_file
분석 (config_file=os.environ['COVERAGE_PROCESS_START']
) 를 않았다십시오. 이것은 부풀어 오른 기억의 문제를 해결했습니다. 따라서 해당 줄은 단순히 다음과 같이됩니다.
cov = coverage(data_suffix=True)
해당 하위 프로세스의 코드를 직접 테스트하지 않습니까? – jonrsharpe
글쎄요, 대부분 그렇습니다. 그러나 유용하고 유용한 다중 처리가 사용되는 경우 (잠금 또는 다중 처리 대기열을 사용하여 데이터베이스 액세스를 래핑하여 직렬 데이터 저장을 시행하는 경우)에만 특정 부분이 있습니다. 그리고 나는이 코드가 성공적인 테스트로 인해 작동한다는 것을 알고 있습니다. 이것은 또한 작업복에 표시되는 것이 좋을 것입니다 :-) – SmCaterpillar
http를 통해 https://bitbucket.org/ned/coveragepy/issue/117/enable-coverage-measurement-of-code-run-by를 참조하십시오. : //nedbatchelder.com/code/coverage/trouble.html – jonrsharpe