2012-03-28 3 views

답변

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']) 

참고.

+0

setuptools의 내부 테스트 러를 사용할 경우 커버리지 명령을 추가하는 것이 실제로 유용 할 것입니다. 이것으로 당신은 단지 범위 명령을 실행할 수 있습니다. –

2

당신이 찾고있는 것은 Extending Distutils capabilities through extensions이며 내가 링크 된 문서에서 다루어집니다. 기본적인 아이디어는 명령과 실행을위한 엔트리 포인트를주고 엔트리 포인트는 컴포넌트 기반 용어의 setuptools를 따라야합니다. 내 생각에, 당신은 운이 좋아요, 왜냐하면 누군가가 이미 그의 프로젝트를 위해 그것을 성공적으로 (Adding Test Code Coverage Analysis to a Python Project's setup Command) 시도했기 때문에 그것을 당신의 목적을 위해 채택 할 수 있어야합니다.