2

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_ARGSpycharm 内にカバレッジを表示するためだけにローカル設定ファイルを作成してそれらを取り除く必要はありません。pycharm testrunner コンソールで標準のカバレッジ出力しか得られない場合、それは世界の終わりではありません。それ以外の場合は、コマンドラインに固執する必要があると思います。

4

0 に答える 0