Подтвердить что ты не робот

PyCharm, Django: нулевой охват кода

PyCharm имеет действие "Run with Coverage" для целевых объектов Django. Это запускает тесты, но показывает нулевое покрытие (0% файлов, не охваченных в области проекта, и всех красных в редакторе). Проверка или снятие флажка "Использовать в комплекте cover.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%

Что может быть причиной этого?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

Я также пытался решить эту проблему в 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()

Ответ 4

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

Затем этот отчет можно удобно загрузить в PyCharm/IDEA с помощью кнопки Analyze → Show Coverage Data... → + и выбрать файл xml.