2017-08-24 2 views
4

私のプロジェクトパッケージの一部は、jenkinsジョブによってvenvにインストールされています。インストール後、ジョブはいくつかのユニットテストを個別のリポジトリから取り出し、インストールされたパッケージに対して実行します。インストールされているパッケージのカバレッジでnose2を実行

私の問題は、coverageはテストスクリプトのみをカバーし、インストールされたパッケージはカバーしていません。

は、ここでフォルダ構造です:

JenkinsWorkspace 
|_Venv 
|_MyProject 
    |_trunk 
    |_Python 
    |_Package1 
    |_Package2 
     |_temp_tests 
     |_test_suite1.py 
     |_... 

は、だから私は思った以上の説明のために、私はMyProjectにパッケージを反復、temp_testsに各1のテストをチェックアウトし、temp_testscdnose2 -t ..\..\..\Venv\Lib\site-packages

を呼び出します-t paramは最上位ディレクトリを設定し、そこにインストールされたものを使用します。そして、はい、テストはうまくいっています。しかし、coverageはテストスイートだけをカバーします。 インストールされたパッケージのカバレッジを行うように鼻に指示する方法はありますか?完全のために

ここに私のunittest.cfg

[coverage] 
coverage-report = term-missing 
always-on = True 
coverage-config = .coveragerc 

[junit-xml] 
always-on = True 
keep_restricted = False 
path = nose2-junit.xml 
test_fullname = False 

.coveragerc

# .coveragerc 
[run] 
branch = True 
[report] 
show_missing = True 
omit = 
    build/* 
    tests/* 
    setup.py 
    */__init__.py 

答えて

0

テストの後にcoverageパッケージを使用して私の問題を解決しました。

私がやった:

nose2 --plugin nose2.plugins.junitxml -s tests -c unittest.cfg 
python -m coverage xml 

フォルダtestsは私のテストを含むされます。

マイunittest.cfgに設定されています

[coverage] 
coverage-report = term-missing 
always-on = True 
coverage-config = .coveragerc 

[junit-xml] 
always-on = True 
keep_restricted = False 
path = nose2-junit.xml 
test_fullname = False 

そして.coveragercに、私はすべての不要な(システム)パッケージを除外:私はnose2とLinuxの準備ができていないので、ただの推測だ

# .coveragerc 
[run] 
branch = True 
[report] 
show_missing = True 
omit = 
    build/* 
    tests/* 
    setup.py 
    */__init__.py 
    */nose/* 
    */pkg_resources/* 
    */six.py 
    */nose2/* 
    */coverage/* 
    */cov_core.py 
0

nose2のカバレッジプラグインは、カバレッジ、--coverage PATHを測定するためのパスを定義するためのオプションを提供します。 PATHは通常のシェル構文で複数のディレクトリを受け入れます。私はこのコマンドラインをお勧めします:

nose2 -t ..\..\..\Venv\Lib\site-packages --coverage ..\..\..\Venv\Lib\site-packages 
+1

注意をたった今。どのように動作するか教えてください。 – yacc

関連する問題