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

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

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

Так что, похоже, решение было сказать pytestчтобы не запускать покрытие при запуске из PyCharm. Теперь работают как параметр "Запуск с покрытием", так и точки останова в тестах.

Посмотрите на мой ответ на другой вопрос о той же проблеме: /questions/35464073/pycharm-django-pokryitie-s-nulevyim-kodom/35464092#35464092

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

Другие вопросы по тегам