2012-03-28 9 views

答えて

0

coverage実行可能ファイルへのサブプロセス呼び出しを使用する簡単な解決方法があります。私はあなたがテストカバレッジを測定するコードを含むmycoolpackageと呼ばれるPythonパッケージを持っていて、あなたはパッケージを持っています。これは、テストスイートを返すsuite関数を公開しています。

まず、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で、私がリンクしているドキュメントに記載されています。基本的な考え方は、コマンドと実行のためのエントリポイントを与えることであり、エントリポイントはコンポーネントベースの用語集のいくつかに従うべきです。誰かが既に成功しているので(Adding Test Code Coverage Analysis to a Python Project's setup Command)、彼のプロジェクトのためにそれを統合しているので、あなたの目的のためにそれを採用することができるはずです。

関連する問題