У меня есть проект на Python, в котором я использую:
- pipenv
- токсичный
- pytest
и многое другое.
По сути, я хочу добавить tox
в свои конвейеры gitlab. И почти все вроде работает, вызов mypy
, flake8
или black
из tox работает нормально. Но когда я вызываю tox -e py37
(поэтому я хочу запустить тесты) с включенным покрытием, тесты запускаются, я вижу их результаты, но покрытие составляет 0%
(100%
только для пустых __init__
файлов и т. Д.), И я получаю предупреждение: Coverage.py warning: No data was collected. (no-data-collected)
.
Это моя относящаяся к pytest часть tox.ini
:
[tox]
envlist = flake8,mypy,black,py37
[testenv]
extras = tests
commands=
pytest --cov -ra --tb=short {posargs}
А это мой .coveragerc
:
[run]
branch = True
source =
foo
omit =
foo/__init__.py
foo/__main__.py
foo/bar/__init__.py
foo/baz/__init__.py
[report]
exclude_lines =
pragma: no cover
if __name__ == .__main__.
show_missing = True
У меня есть рабочий setup.py
, который включает все необходимые пакеты: pytest
, pytest-cov
и многие другие для стиля и т. Д. (Который работает). У меня также __init__.py
в папке tests
.
Забавно то, что если я вызываю ту же команду, что и в tox.ini
, из командной строки (в pipenv
): pytest --cov -ra --tb=short
, я получаю те же результаты, но с нормальным покрытием (в моем случае это 100%
).
Есть способ исправить? Я не хочу, чтобы мои конвейеры показывали неправильное покрытие + даже если они каким-то волшебным образом действительно получат правильное покрытие, я все равно хотел бы увидеть его локально.
P.S Когда я пытался решить проблему, я позвонил в tox с tox --sitepackages -e py37
и получил несколько ошибок, например test command found but not in testenv
. И, помимо этих ошибок, мое освещение тогда было в порядке. Но затем я удалил tox
, pytest
и pytest-cov
из своего глобального реестра pip, и теперь с флагом --sitepackages
или без него я все еще получаю 0%
покрытие
--cov
ожидает аргумента, например имя пакета или исходный каталог или файл, напримерpytest --cov=foo.bar
и т. Д. - person hoefling   schedule 05.11.2019.coveragerc
позаботится об этом. Кроме того, это не сработало бы из командной строки, если бы проблема была в этом. - person dabljues   schedule 05.11.2019