Задать вопрос

Coverage в pycharm показывает погоду на марсе?

Добрый день. Кто-нибудь из вас использует coverage в pycharm? У меня сильное ощущение, что он реально показывает погоду на Марсе: запускаю проект, ставлю точку дебага в функции, обрабатывающей сообщение от клиента - дебаггер срабатывает. Запускаю в coverage-режиме - говорит, что функция обработки вообще не вызывается. Хотя сервер продолжает обрабатывать запросы. Очевидно, что с coverage что-то не так.
С тестами все еще веселее. В некоторых местах доходит до абсурда. Есть юнит-тест, один метод из двух строк. Одна, по мнению coverage, вызывается, вторая - нет.
f48f15efe7c2457d83219fd256abb4a5
Один из тестов вообще "не исполнялся":
3841bfc98589473ea8a58f92eafee254
Естественно, при этом все тесты пробежали, успешно:
a7be8101152046bc897dbf1910285ca8
А теперь десерт. Если закоментировать все тесты, и оставить лишь один, минорный, который тестирует только 2 функции в utils, то получим следующуюю картину:
ef13114dfa4246e1a569285ff79b22e7
То есть, даже несмотря на то, что код дергать просто нечему, он все равно "покрыт" (см. список файлов проекта). И даже комментарии умудрились как-то "выполниться". А где-то даже частично:
69c89be65b774286858926c726d309d0
Но если мы создадим маленький файлик, который делает ничего, то произойдет чудо:
c65e7959a5424aa4bb0b191aeebc4a39
Объясните, как эта магия работает? Я уже всю голову об стену сломал. Invalidate caches & restart, удалял все файлы на удаленном сервере (все работает через удаленный интерпретатор, до убунты в контейнере, в виртуалке). Даже контейнер сносил и раскатывал заново (с перенастройкой remote interpreter для выгрузки pycharm_helpers). Все папки с конфигами облазил в поисках кэша coverage. Ничего. Магия. Я не понимаю что происходит.
  • Вопрос задан
  • 1020 просмотров
Подписаться 4 Оценить Комментировать
Ответ пользователя Николай Карелин К ответам на вопрос (3)
nikolay_karelin
@nikolay_karelin
Ведущий разработчик, пишу на Python, Tcl, Matlab
А что говорят разработчики? На такое ИМХО можно баг критический завести, даже если Community версия.
Ответ написан
Комментировать