PyCharm, Django: покрытие нулевого кода - PullRequest
15 голосов
/ 23 марта 2012

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 ]

4 голосов
/ 17 августа 2017

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

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

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

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

2 голосов
/ 30 марта 2012

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

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

В консоли PyCharm была зарегистрирована ошибка, хотя после результатов тестов это было связано с lighting.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» решить проблему на вашей стороне, лучшим решением будет исправить ошибки, но до тех пор вы увидите результаты покрытия.

1 голос
/ 04 августа 2015

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

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

1 голос
/ 11 октября 2013

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

В настоящий момент я попытался использовать как Python apt-get, так и стек 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()
...