このスレッドからサンプルコードを実行しました。 Pythonでcoverage.pyを適切に使用する方法
ただし、このコマンドを実行するとpy.test test.py --cov=sample.py
警告が表示されたため、レポートは作成されませんでした。
platform linux2 -- Python 2.7.12, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /media/sf_Virtual_Drive/ASU/CSE565_testand
validation/Assignments/temp, inifile:
plugins: cov-2.5.1
collected 3 items
test.py ...Coverage.py warning: Module sample.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
誰もがなぜcoverage.py
動作しません?
したがって、coverage run -m py.test test.py
別に、警告は表示されません。
短い答え:ファイル名ではなく、モジュール名で実行する必要があります:pytest --cov sample test.py
あなたがリンクした回答の1つのコメント( Pythonでcoverage.pyを適切に使用する方法? )は、カバレッジを取得しようとしているファイルがインポートされたモジュールである場合、これが機能しないように見えることを説明していますテストによって。私はそれを再現することができました:
./ sample.py
def add(*args):
return sum(args)
./ test.py
from sample import add
def test_add():
assert add(1, 2) == 3
そして私は同じエラーを受け取ります:
$ pytest --cov sample.py test.py
========================================================================================== test session starts ===========================================================================================
platform darwin -- Python 3.7.2, pytest-4.3.1, py-1.8.0, pluggy-0.9.0
rootdir: /path/to/directory, inifile:
plugins: cov-2.6.1
collected 1 item
test.py . [100%]Coverage.py warning: Module sample.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
/path/to/directory/.venv/lib/python3.7/site-packages/pytest_cov/plugin.py:229: PytestWarning: Failed to generate report: No data to report.
self.cov_controller.finish()
WARNING: Failed to generate report: No data to report.
ただし、代わりにモジュール名を使用する場合:
pytest --cov sample test.py
========================================================================================== test session starts ===========================================================================================
platform darwin -- Python 3.7.2, pytest-4.3.1, py-1.8.0, pluggy-0.9.0
rootdir: /path/to/directory, inifile:
plugins: cov-2.6.1
collected 1 item
test.py . [100%]
---------- coverage: platform darwin, python 3.7.2-final-0 -----------
Name Stmts Miss Cover
-------------------------------
sample.py 2 0 100%
pytest-cov のドキュメントは、PATH
を使用できることを示しているようですが、すべてのケースで機能するとは限りません...