2016-05-14 2 views
1

При попытке запустить тесты с покрытием под Django + django-носом в PyCharm я не могу заставить отчет о покрытии работать. Я пробовал с комплектом coverage.py и без него. Без комплекте coverage.py я вижу:Покрытие кода PyCharm для Django + django-нос

Traceback (most recent call last): 
    File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module> 
    main() 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 741, in main 
    status = CoverageScript().command_line(argv) 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 481, in command_line 
    return self.do_run(options, args) 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 625, in do_run 
    self.coverage.stop() 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/control.py", line 692, in stop 
    self.collector.stop() 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/collector.py", line 277, in stop 
    "Expected current collector to be %r, but it's %r" % (self, self._collectors[-1]) 
AssertionError: Expected current collector to be <Collector at 0x10e0cfbe0: CTracer>, but it's <Collector at 0x10fa368d0: CTracer> 

В то время как с ней я вижу:

Traceback (most recent call last): 
    File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module> 
    main() 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 721, in main 
    status = CoverageScript().command_line(argv) 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 438, in command_line 
    self.do_execute(options, args) 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 580, in do_execute 
    self.coverage.stop() 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/control.py", line 410, in stop 
    self.collector.stop() 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/collector.py", line 294, in stop 
    assert self._collectors[-1] is self 
AssertionError 

Мои тесты и охват отчетов работу правильно с помощью командной строки, то есть:

$ python manage.py test 

Я вы настроили конфигурацию запуска с использованием шаблона тестов Django, и я не делаю ничего особенного или необычного, насколько мне известно. Кто-нибудь сталкивался с этим и решал его? Интеграция охвата была бы очень полезна!

Update

Этот вопрос был открыт с JetBrains here.

ответ

0

Я предполагаю, что у вас есть что-то похожее на это в вашей конфигурации:

NOSE_ARGS = [ 
    '--with-coverage', 
    '--cover-package=foo,bar' 
] 

покрытие PyCharm в взрывающийся, когда это настраивается. Я предполагаю, что он либо запускает два экземпляра покрытия, либо выход покрытия является чем-то другим, чем он ожидал для синтаксического анализа. В любом случае, кажется, что вы не можете использовать его в данный момент.

Solutions на данный момент:

  • удалить NOSE_ARGS конфигурации, и если какие-либо из ваших автоматизированных/непрерывных инструментов интеграции нужно, запускать их с параметрами покрытия в командной строке: python manage.py test --with-coverage --cover-package=foo (я выбрал этот вариант из-за преимуществ в PyCharm)
  • не использовать покрытие в PyCharm

Примечание: я смог найти кого-то еще с этой проблемой here.

+0

[KFunk] (http://stackoverflow.com/users/1707152/kfunk), вы правы, что у меня есть эти значения в моей «NOSE_ARGS». Я согласен, что их удаление позволяет PyCharm играть хорошо. Тем временем я открыл ошибку (возможно, это запрос функции) с JetBrains, и я видел там небольшое количество движений. Посмотрим, что из этого получится! Я принимаю ваш ответ, потому что сейчас это самая правильная вещь, такая грустная, как это делает меня. –

+0

Когда/если реактивные мозги возвращаются к вам с помощью идентификатора общедоступного билета, не могли бы вы обновить свой вопрос, включив эту ссылку внизу? Я буду размещать на этом билете, а другие, возможно, захотят. – KFunk

+0

Хорошая точка. Готово! –

Смежные вопросы