pycharm 内の django アプリケーションのカバレッジでテストを実行しようとしています。テストランナーとしてdjango-nose/noseを使用しており、test_settings.pyにこれらの設定があります
# nose settings
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
'--with-coverage',
'--cover-package=myapp',
]
コマンドライン(または組み込みのpycharmターミナル)に移動してvirtualenvをアクティブにして実行すると、これはすべて非常にうまく機能します... django-admin.py test --settings=myapp.tests.test_settings
...期待する出力が得られます。
ただし、Pycharm 内でテスト実行構成を使用しようとすると、カバレッジ出力が得られなくなります。得られるのは次のとおりです。
Testing started at 16:37 ...
There is no such manage file manage
nosetests --with-coverage --cover-package=dynamicbanners --verbosity=1
Creating test database for alias 'default'...
..
Process finished with exit code 0
(スタンドアロンアプリであるため、manage.pyはありません。したがって、ファイルの管理メッセージが想定されます)。
テストは引き続き「合格」しますが、出力も .coverage ファイルも作成されません。Windows で一時的に実行していますが、Windows が .coverage ファイルへの書き込みアクセスを拒否しているため、何も表示されない可能性はありますか? または、Pycharm は出力を食べていますが、表示に失敗していますか?
組み込みのpycharmの「カバレッジで実行」オプションを使用しますが、問題があるようです
NOSE_ARGS = [
'--with-coverage',
'--cover-package=myapp',
]
これらのオプションで実行するとエラーが吐き出されるため、カバレッジの2つのインスタンスが初期化されていることが原因だと思われます
Testing started at 16:41 ...
There is no such manage file manage
nosetests --with-coverage --cover-package=myapp --verbosity=1
Creating test database for alias 'default'...
Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 3.0.1\helpers\run_coverage.py", line 34, in <module>
main()
File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\cmdline.py", line 720, in main
status = CoverageScript().command_line(argv)
File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\cmdline.py", line 438, in command_line
self.do_execute(options, args)
File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\cmdline.py", line 580, in do_execute
self.coverage.stop()
File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\control.py", line 410, in stop
self.collector.stop()
File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\collector.py", line 294, in stop
assert self._collectors[-1] is self
AssertionError
Process finished with exit code 1
これは、設定で「バンドルされたcoverage.pyを使用する」のチェックを外したにもかかわらずです->カバレッジ
NOSE_ARGS
pycharm 内にカバレッジを表示するためだけにローカル設定ファイルを作成してそれらを取り除く必要はありません。pycharm testrunner コンソールで標準のカバレッジ出力しか得られない場合、それは世界の終わりではありません。それ以外の場合は、コマンドラインに固執する必要があると思います。