PyCharm, Django: покрытие с нулевым кодом

PyCharm имеет действие "Беги с покрытием" для тестовых целей Django. Это запускает тесты, но показывает нулевое тестовое покрытие (0% файлов, не покрытых на панели проекта, и все красные в редакторе). Установка или снятие флажка "Использовать комплектное покрытие.py" не имеет значения.

Запуск тех же тестов из CLI дает ожидаемые результаты:

$ coverage --version
Coverage.py, version 3.5.1.  http://nedbatchelder.com/code/coverage


$ coverage run ./manage.py test blackbox
Creating test database for alias 'default'...
....
----------------------------------------------------------------------
Ran 4 tests in 0.002s

OK
Destroying test database for alias 'default'...


$ coverage report
Name                      Stmts   Miss  Cover
---------------------------------------------
__init__                      0      0   100%
blackbox/__init__             0      0   100%
blackbox/models               5      0   100%
blackbox/rules/__init__       1      0   100%
blackbox/rules/board         62     19    69%
blackbox/tests               49      6    88%
manage                       11      4    64%
settings                     24      0   100%
---------------------------------------------
TOTAL                       152     29    81%

Что может вызвать это?

4 ответа

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

Попробуйте открыть тот же проект через реальный путь, и вы получите правильное поведение.

https://youtrack.jetbrains.com/issue/PY-17616

PS: Обновление старого вопроса, так как ошибка все еще не исправлена.

У меня была похожая проблема, связанная с использованием PyCharm.

Тесты были в порядке, но результаты покрытия не были загружены, "0%" или "не покрыты" везде.

В консоли PyCharm была зарегистрирована ошибка, хотя после результатов тестов это было связано с cover.py:

/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python 
"/Applications/PyCharm 2.5 EAP.app/helpers/run_coverage.py" 
run "--omit=/Applications/PyCharm 2.5 EAP.app/helpers" bin/test

Creating test database for alias 'default'...
................................
----------------------------------------------------------------------
Ran xx tests in xxs

OK
No source for code: '/path/file.py' (<- error)

Process finished with exit code 0

Мое решение состояло в том, чтобы запустить включенный cover.py с возможностью игнорировать ошибки: "-i".

Я отредактировал пакетный файл "run_coverage.py", вы можете увидеть его расположение в выводе консоли и добавить опцию "-i" в последнюю строку:

main(["xml", "-o", coverage_file + ".xml"])

чтобы:

main(["xml", "-i", "-o", coverage_file + ".xml"])

Это сработало для меня, ошибка игнорируется и все данные покрытия теперь загружаются в пользовательский интерфейс.

Если использование "-i" решит проблему на вашей стороне, лучшим решением будет исправить ошибки, но до тех пор вы будете видеть результаты покрытия.

У меня была похожая проблема. Я закончил генерировать данные XML с помощью nosetests --cover-xml, но вы также можете сгенерировать xml из предыдущего запуска. coverage xml

Затем этот отчет можно удобно загрузить в PyCharm/IDEA с помощью кнопки "Анализ" -> "Показать данные покрытия… -> +" и выбора файла XML.

Я также пытался решить эту проблему в Ubuntu.

На данный момент я попытался использовать как apt-get Python, так и стек Enthought Canopy, но безуспешно. В Windows, однако, это работает (используя Canopy).

Я использовал следующий код:

# in a.py
class A(object):

    def p(self, a):
        return a

# in test_a.py
from unittest import TestCase, main
from a import A

class TestA(TestCase):
    def test_p(self):
        inst = A()
        val = inst.p("a")
        self.assertEqual("a", val)


if _name_ == "__main__":
    main()
Другие вопросы по тегам