coverage.py을 사용하여 코드 커버리지 보고서를 생성하는 setuptools에 대한 명령을 만드는 가장 좋은 방법은 무엇입니까?setuptools command for coverage.py
1
A
답변
0
실행 파일 coverage
에 대한 서브 프로세스 호출을 사용하는 간단한 솔루션이 있습니다. 테스트 커버리지를 측정하고자하는 코드가 들어있는 mycoolpackage
이라는 Python 패키지가 있다고 가정하고 테스트 스위트를 반환하는 suite
함수를 표시하는 mytests
패키지가 있습니다.
첫째, run-tests.py
파일을 작성
import os.path, sys
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
import unittest
from mytests import suite
unittest.main(defaultTest='suite')
는 setup.py
에서 다음 명령을 생성하고 setup()
함수의 cmdclass
인수에 추가합니다. coverage.py
당신이 하위 프로세스 호출을 사용하지 않고이 작업을 수행 할 수 있도록 할 API를 가지고 있음을
class run_coverage(Command):
description = "Generate a test coverage report."
user_options = []
def initialize_options(self): pass
def finalize_options(self): pass
def run(self):
import subprocess
subprocess.call(['coverage', 'run', '--source=mycoolpackage', 'run-tests.py'])
subprocess.call(['coverage', 'html'])
참고.
2
당신이 찾고있는 것은 Extending Distutils capabilities through extensions이며 내가 링크 된 문서에서 다루어집니다. 기본적인 아이디어는 명령과 실행을위한 엔트리 포인트를주고 엔트리 포인트는 컴포넌트 기반 용어의 setuptools를 따라야합니다. 내 생각에, 당신은 운이 좋아요, 왜냐하면 누군가가 이미 그의 프로젝트를 위해 그것을 성공적으로 (Adding Test Code Coverage Analysis to a Python Project's setup Command) 시도했기 때문에 그것을 당신의 목적을 위해 채택 할 수 있어야합니다.
setuptools의 내부 테스트 러를 사용할 경우 커버리지 명령을 추가하는 것이 실제로 유용 할 것입니다. 이것으로 당신은 단지 범위 명령을 실행할 수 있습니다. –