Ответ 1
От pytest --help
:
--disable-pytest-warnings
disable warnings summary, overrides -r w flag
Есть ли способ подавить внутренние предупреждения об отказе pytest?
Контекст: Я хочу оценить сложность переноса тестового набора с nose
на pytest
. Набор довольно большой и в значительной степени использует генераторы тестов nose
-style yield
.
Я хотел бы сначала убедиться, что существующие тесты проходят с помощью pytest, а затем, возможно, смените тестовые генераторы на parameterized
.
Просто запуская $ pytest path-to-test-folder
с pytest 3.0.4 полностью доминируют страницы и страницы
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
Есть ли способ отключить эти предупреждения?
От pytest --help
:
--disable-pytest-warnings
disable warnings summary, overrides -r w flag
pytest -p no:warnings
, или добавьте следующее в свой pytest.ini или tox.ini:
[pytest]
addopts = -p no:warnings
Результат будет зеленым без каких-либо предупреждений. См. документацию на https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary.
Имейте в виду, что всегда скрывая все предупреждения, вы можете пропустить важные предупреждения.
Если вы хотите скрыть только определенные предупреждения, посмотрите ответ Cloc.
Я думаю, вы не хотите скрывать все предупреждения, а только те, которые не имеют отношения. И в этом случае предупреждения об удалении из импортированных модулей Python.
Ознакомиться с документацией по pytest о захвате предупреждений:
И параметр командной строки -W, и параметр ini filterwarnings основаны на собственных параметрах Python -W и warnings.simplefilter, поэтому обратитесь к этим разделам в документации по Python для получения информации о других примеры и расширенное использование.
Таким образом, вы можете фильтровать предупреждения с помощью опции python -W
!
Кажется, что pytest
полностью удаляет фильтры, потому что он показывает все эти DeprecationWarning
во время работы, и документация Python о фильтрах предупреждений по умолчанию ясно говорит:
В регулярных сборках выпуска фильтр предупреждений по умолчанию имеет следующие записи (в порядке приоритета):
default::DeprecationWarning:__main__ ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarning
Таким образом, в вашем случае, если вы хотите, чтобы, скажем, фильтровали типы предупреждений, которые вы хотите игнорировать, такие как DeprecationWarning
, просто запустите команду pytest с опцией -W
:
$ pytest path-to-test-folder -W ignore::DeprecationWarning
РЕДАКТИРОВАТЬ. Из комментария colini можно выполнять фильтрацию по модулю. Пример игнорирования предупреждений об устаревании от всех sqlalchemy:
ignore::DeprecationWarning:sqlalchemy.*:
Затем вы можете перечислить свои установленные модули, которые создают слишком много шума на выходе pytest
Используйте с файлом, а не в командной строке:
Вы можете указать эти фильтры в файле pytest.ini:
[pytest]
filterwarnings =
ignore::DeprecationWarning
Я не хочу скрывать все предупреждения, поэтому я поместил это в pytest.ini
[pytest]
filterwarnings =
ignore::DeprecationWarning