10

pytestを実行してcoveragercファイルで動作させようとしています。.coveragercファイルの設定は使用されていないので、ファイルはまったく使用されていないと思います。

以下の私のプロジェクト構造とpytest呼び出しを参照してください!私は何が間違っているのですか?

計画:

basepath/lib/
basepath/.coveragerc
basepath/test/test_lib
basepath/test/run.py

virtualenvからtest/run.pyを呼び出します

basepath$ python test/run.py

run.py

import pytest
pytest.main('test/test_lib -v --cov-report xml --cov lib --cov-config .coveragerc')

.coveragercを別のディレクトリ(lib /、test /、test / test_lib /など)に移動しようとしましたが、いずれも機能しませんでした。

.coveragercに設定されている「xxxcoverage」という名前のカバレッジファイルを取得することを期待していましたが、常にデフォルトの.coverageを取得しました

.coveragerc

[run]
data_file = xxxcoverage
4

2 に答える 2

7

pytestのドキュメントを何度も読んでいます...私は私の「間違い」を見つけました:
ここにそれは言います:

このプラグインはいくつかのオプションを制御し、構成ファイルでオプションを設定しても効果がないことに注意してください。これには、測定するソースの指定(ソースオプション)およびすべてのデータファイル処理(data_fileおよび並列オプション)が含まれます。

したがって、.coveragercのdata_fileオプションは効果がないため、私のテストは役に立ちませんでした。

省略オプションでテストしましたが、機能しました。

.coveragerc上記のように(そして予想されるように)ベースパスに配置する必要があります

于 2012-04-10T15:08:56.107 に答える
0

答えは少し変わったと思います。https://pytest-cov.readthedocs.io/en/latest/config.htmlから取得

pytest-covは、次のような構成ファイルを指すことができます。

pytest --cov-config=.coveragerc
       --cov=myproj
       myproj/tests/

このプラグインは、カバレッジのdata_fileおよび並列オプションをオーバーライドします。pytest-covなしでカバレッジを実行しない限り、.coveragercでこれらのオプションを設定することは無意味です。

--cov = somethingオプション(値を指定)を使用すると、カバレッジのソースオプションも上書きされます。複数のソースがある場合は、.coveragercでそれらを設定し、-cov = pkg1 --cov = pkg2 --cov = pkg3で長いコマンドラインを使用する代わりに、常に--cov(値なし)を使用する方が簡単な場合があります。 ..。。

--cov-branchオプションを使用すると、カバレッジのブランチオプションも上書きされます。

したがって、ソースオプションを指定できます(少なくとも、値なしで--covを指定して実行する場合)

于 2021-02-10T18:08:21.313 に答える