2017-10-24 7 views
0

にトップレベルのパッケージ名をオンPythonのカバレッジは、私はこのようにレイアウトされたプロジェクトを持っている期間

pytest -s --junitxml=pytests.xml --cov-report xml --cov-report term-missing --cov-branch --cov=ex_secure 

で次にトップレベルのパッケージその結果coverage.xml.命名されています

<package branch-rate="0.4722" complexity="0" line-rate="0.6801" name="."> 

しかし、私はを呼び出す場合このような:次に、トップレベルのパッケージが正しくex_secureという

pytest -s --junitxml=pytests.xml --cov-report xml --cov-report term-missing --cov-branch --cov=ex_secure.base --cov=ex_secure.metrics --cov=ex_secure.keys 

<package branch-rate="0.4722" complexity="0" line-rate="0.6801" name="ex_secure"> 

それは今のところ大丈夫な回避策だが、それは理想的ではありません。より多くのパッケージを追加する場合は、それらを列挙しておく必要があります(または、カバレッジレポートに表示されません)。さらに、__init__.pyはこのメカニズムではカバーされません。

私はここで間違っていますか?

UPDATE 1:

私が代わりにpytest-covを使用しての直接Pythonのカバレッジを実行した場合、予想通り、それは動作します:

coverage run --branch --source=ex_secure -m pytest -s --junitxml=pytests.xml 
coverage xml 

その後:

<package branch-rate="0.4722" complexity="0" line-rate="0.6771" name="ex_secure"> 

UPDATE 2:

私はもともと行ったようPyTestを実行しますが、その後の再生成されたレポートを修正します、直接Pythonのカバレッジを持つXMLレポートを再生成する場合は、しかし、持っているわずかに異なる番号:その後

<package branch-rate="0.3058" complexity="0" line-rate="0.4769" name="ex_secure"> 

答えて

0

残念ながら、これはPY-カバレッジとPyTest-Covを両方にまたがり、むしろ厄介な二部バグがあります。詳細はPyTest-Cov GitHubおよびPy-Coverage BitBucketに記載されている。

要するに

、ほとんどの人は、この問題を見ていないので、あなたはsourcesに合格することはできませんが、PY-カバレッジ用のPython APIを使用しているときにsourcesに渡すことができ、コマンドラインからcoverage xmlを呼び出して、そのAPIはsources属性を正しく処理しません。一方、PyTest-CovはPy-Coverage用のPython APIを使用しているため、PyTest-Covを--cov=xxxx--cov-report xmlと呼び出すと、この問題が発生します。

関連する問題