Python カバレッジに仮想環境サイト パッケージが含まれないようにする 質問する

Python カバレッジに仮想環境サイト パッケージが含まれないようにする 質問する

私はカバレッジを初めて使用しており、奇妙な問題に遭遇しました。私のカバレッジは仮想環境のサイト パッケージを考慮に入れています。カバレッジ実行の出力は次のとおりです。

coverage run test.py
....................
----------------------------------------------------------------------
Ran 20 tests in 0.060s

OK
(atcatalog)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jmfrank63@fullstack-audio-text-catalog:~/workspace (git master)       [19:58:45]
$ coverage report
Name                                                                              Stmts   Miss  Cover
-----------------------------------------------------------------------------------------------------
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/__init__               18      0   100%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/_compat                38     20    47%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/app                   528    255    52%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/blueprints            156    118    24%
                             .
                             .
                             .
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/urls               412    215    48%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/utils              242    175    28%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/wrappers           568    298    48%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/wsgi               448    352    21%
atcatalog/__init__                                                                    7      0   100%
atcatalog/views/__init__                                                              0      0   100%
atcatalog/views/publang                                                               7      0   100%
atcatalog/views/pubtext                                                               1      0   100%
atcatalog/views/userlang                                                             13      0   100%
atcatalog/views/users                                                                 5      0   100%
atcatalog/views/usertext                                                             14      0   100%
test                                                                                120      0   100%
-----------------------------------------------------------------------------------------------------
TOTAL                                                                             12530   8044    36%
(atcatalog)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jmfrank63@fullstack-audio-text-catalog:~/workspace (git master)       [19:58:55]

以下は、ホームの下にあるプロジェクト ディレクトリの構造です。

workspace/
├── README.md
├── atcatalog
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── static
│   ├── templates
│   └── views
│       ├── __init__.py
│       ├── __init__.pyc
│       ├── publang.py
│       ├── publang.pyc
│       ├── pubtext.py
│       ├── pubtext.pyc
│       ├── userlang.py
│       ├── userlang.pyc
│       ├── users.py
│       ├── users.pyc
│       ├── usertext.py
│       └── usertext.pyc
├── requirements.txt
├── run.py
└── test.py

最初はプロジェクト ディレクトリ内に仮想環境がありましたが、今は virtualenvwrapper を使用して ~/Envs に移動しましたが、問題は解決しませんでした。run.py と test.py は特別なものではなく、どちらも atcatalog から app をインポートします。仮想環境ディレクトリを省略する方法も探してみましたが、Google では答えがありませんでした (驚いたことに)。すでに十分にテストされているサイト パッケージをテストすることがカバレッジの目的ではないと思います。そのため、それらを実行から除外します。

サイト パッケージをテストする際のカバレッジを回避するにはどうすればよいでしょうか?

ベストアンサー1

感謝tknickman私はそれを理解しました:どちらかを使用してください

coverage run --source <path to project dir> test.py

または、カバレッジを実行するディレクトリに、次の内容を含む構成ファイル .coveragerc を作成します。

[run]
source =
    <path to project dir>

これは、仮想環境がプロジェクトディレクトリの下にインストールされていない場合に使用します。仮想環境がプロジェクトディレクトリの下にインストールされている場合は、

coverage run --source <project path> --omit <pattern> test.py

omitは次のようなファイルパターンを要求することに注意してください。

~/projectdir/venv/*

パスの代わりに。

対応する .coveragerc は次のようになります。

[run]
source=
    <path to project dir>
omit=
    <path to project dir>/<name of virtual env>/*

標準ライブラリのパッケージと同様に、site-packages の下にインストールされたパッケージはデフォルトでカバーされるべきではないと私は依然として考えています。

おすすめ記事