Я думаю, вы хотите скрывать не все предупреждения, а только те, которые не имеют отношения к делу. И в этом случае предупреждения об удалении из импортированных модулей python.
Прочтите документацию pytest о Warnings Capture :
И параметр командной строки -W, и параметр filterwarnings ini основаны на собственном параметре Python -W и warnings.simplefilter , поэтому, пожалуйста, обратитесь к этим разделам документации Python для других примеров и расширенного использования.
Таким образом, вы можете фильтровать предупреждения с помощью -W
опции python !
Кажется, что 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