Почему большинство файлов Django моего проекта отсутствуют в отчете PyTest Coverage? - PullRequest
0 голосов
/ 21 октября 2019

Я использую pytest-cov и pytest-django, используя tox. У меня есть очень простой tox.ini файл с ограниченными omit файлами. Проблема в том, что когда я запускаю pytest с использованием tox -e unit, я получаю ограниченный отчет о покрытии:

---------- coverage: platform darwin, python 3.7.4-final-0 -----------
Name                                           Stmts   Miss  Cover   Missing
----------------------------------------------------------------------------
components/__init__.py                             0      0   100%
components/client/__init__.py                      0      0   100%
components/client/admin.py                        27      0   100%
components/client/factories.py                    57      0   100%
components/client/models.py                       62      0   100%
components/controller/__init__.py                  0      0   100%
components/controller/admin.py                    62      6    90%   96-97, 109-110, 122-123
components/controller/management/__init__.py       0      0   100%
components/controller/models.py                  107      6    94%   19, 31, 54, 92, 105, 132
components/personal/__init__.py                    0      0   100%
components/personal/admin.py                      24      0   100%
components/personal/factories.py                  39      0   100%
components/personal/models.py                     81     16    80%   23, 36, 49, 62, 72, 75-76, 92-104
server/__init__.py                                 3      0   100%
server/celery.py                                  10      1    90%   30
server/config/__init__.py                          1      0   100%
server/settings.py                                52      0   100%
server/test.py                                    56     33    41%   16-19, 43, 48-49, 63-88, 94-105, 112-115
----------------------------------------------------------------------------
TOTAL                                            589     62    89%

Все мои приложения Django в components содержат много файлов, которые должны быть включены в отчет,включая apps, serializers, signals, urls и views (стандартная структура Django). Кто-нибудь есть идеи, что я скучаю? Все, что у меня есть в tox.ini, похоже, в точности соответствует тому, что я прочитал в различной документации для pytest, pytest-django, pytest-cov и coverage, но я, должно быть, упускаю что-то важное!

tox.ini

[tox]
; The only reason we'd want to `sdist` is if we distributed this as a Python package in PyPI, so let's skip it:
skipsdist = True
envlist =
    {py37}-django{2}
    lint
skip_missing_interpreters = true

[testenv]
whitelist_externals = *
passenv = *
deps = -rrequirements-test.txt
commands = {[testenv:unit]commands}

[testenv:unit]
deps = {[testenv]deps}
commands = pytest {posargs:--cov=project-name}


[pytest]
DJANGO_SETTINGS_MODULE = server.settings
python_files = tests.py test_*.py *_tests.py
addopts =
    -v -s
    --color=yes
    --cov
    --cov-append
    --cov-report=term-missing
    --cov-config=tox.ini


[coverage:report]
show_missing = True
omit =
    */usr/*
    */.tox/*py
    */.virtualenvs/*
    */migrations/*
    */tests/*

[report]
omit =
    */usr/*
    */.tox/*
    */migrations/*
    */tests/*

1 Ответ

0 голосов
/ 25 октября 2019

Ответ кажется довольно тривиальным и очевидным, но поразительно, его было довольно сложно найти. coverage будет сообщать только о коде, который фактически запущен. Таким образом, если ваши тесты не вызывают код и он не запускается во время обычной загрузки приложения, coverage не будет отображать отчет по этому коду. Код, который не запускается, не вызывает ошибок:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...