Pycharm/IntelliJ показывает 0% покрытие для pytest, хотя покрытие было создано

У меня есть проект Python и задача tests, настроенная на запуск pytest из рабочего каталога проекта.

введите описание изображения здесь

Выполнение Run 'tests' with coverage из меню Run успешно запускает тесты, и результаты консоли показывают, что покрытие было измерено - например. 53% покрытия для mws.py.

введите описание изображения здесь

Автоматически применяемое покрытие (как справа) составляет 0% для всех файлов, я не знаю, почему. Я использую IntelliJ 2017.2.2 EAP.

NB: есть связанный вопрос пятилетней давности здесь, но решение с самым высоким рейтингом здесь не применяется. В этом случае в консоли результатов нет сообщения об ошибке.


person James Hiew    schedule 09.08.2017    source источник


Ответы (3)


Я думаю, проблема заключается в том, что вы используете pytest-cov, поэтому Pycharm не может проанализировать результат, который отображается в тексте, например 53%, сгенерированный pytest-cov;

Поэтому измените параметр в pytest.ini на addopts = -s -v, если вы хотите использовать встроенные в Pycharm инструменты покрытия.

person aristotll    schedule 12.08.2017
comment
Действительно простое решение! Спасибо! Я могу присудить награду за 5 часов - person James Hiew; 12.08.2017
comment
@AlmogCohen: я думаю, что идея состоит в том, чтобы вообще не использовать pytest-cov с PyCharm, просто использовать -s -v. Согласитесь, не оптимальное решение. - person damd; 05.04.2019

У меня была аналогичная проблема, но принятое здесь решение не решило ее.

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

Но вскоре я заметил две проблемы:

  1. Когда я выбрал «Выполнить с покрытием», я получил сообщение об ошибке, что результаты покрытия не найдены, и все файлы показали покрытие 0%.
  2. Точки останова в тестах не срабатывали при запуске теста в режиме отладки.

Обе проблемы исчезли, когда я добавил --no-cov к дополнительным аргументам, переданным pytest (эта опция находится в конфигурации запуска).

Итак, кажется, исправление состояло в том, чтобы указать pytest не запускать покрытие при запуске из PyCharm. Теперь работают как опция «Выполнить с покрытием», так и точки останова в тестах.

person avivr    schedule 24.07.2020

Взгляните на мой ответ на другой вопрос о той же проблеме: https://stackoverflow.com/a/45729723/1229510

В основном, если вы используете симлинки - отображение покрытия не будет работать.

person Marek    schedule 17.08.2017