У меня есть проект на Python, где я использую:
и многие другие.
По сути, я хочу добавить tox
к моим конвейерам gitlab. И почти все, кажется, работает, вызов mypy
, flake8
или black
с токсиком работает нормально. Но когда я звоню 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%
).
Есть ли способ это исправить? Я не хочу, чтобы мои конвейеры показывали неправильное покрытие + даже если они каким-то волшебным образом действительно получат правильное покрытие, я все равно хотел бы увидеть его локально.
PS Когда я пытался решить проблему, я позвонилтоксик с tox --sitepackages -e py37
и я получил некоторые ошибки, такие как test command found but not in testenv
. И кроме этих ошибок, мое освещение было хорошо тогда. Но затем я удалил tox
, pytest
и pytest-cov
из своего глобального регистра пипсов, и теперь с или без флага --sitepackages
я все еще получаю 0%
покрытие