Как избавиться от предупреждений сторонних библиотек при выполнении юнит-тестов?

Я настраиваю свой проект, используя PyScaffold, и, выполняя модульные тесты, используя pytest, я получаю следующее стороннее предупреждение, от которого я хотел бы избавиться, но не знаю как:

==================================== warnings summary ====================================
c:devpyrepolibsite-packagespatsyconstraint.py:13
  c:devpyrepolibsite-packagespatsyconstraint.py:13: DeprecationWarning: Using or importing
 the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in
 3.9 it will stop working
    from collections import Mapping

-- Docs: https://docs.pytest.org/en/latest/warnings.html

Каков наилучший способ избежать предупреждений от сторонних библиотек, подобных этому, но не предупреждений моего собственного проекта?

Всего 1 ответ


Есть несколько способов подавления предупреждений:

  • используя аргументы командной строки

Чтобы скрыть предупреждение полностью используйте

pytest . -W ignore::DeprecationWarning

Эта команда скрывает warnings summary но покажет 1 passed, 1 warning

pytest . --disable-warnings
  • создание pytest.ini со следующим содержанием
[pytest]
filterwarnings =
    ignore::DeprecationWarning

Вы также можете использовать шаблоны регулярных выражений:

ignore:.*U.*mode is deprecated:DeprecationWarning

Из документов:

Это будет игнорировать все предупреждения типа DeprecationWarning, где начало сообщения соответствует регулярному выражению .*U.*mode is deprecated .

  • пометка вашей функции test_ с помощью @pytest.mark.filterwarnings("ignore::DeprecationWarning")

  • используя переменную окружения PYTHONWARNINGS

PYTHONWARNINGS="ignore::DeprecationWarning" pytest .

Он имеет тот же синтаксис, что и аргумент командной строки -W . Больше здесь .

Более подробную информацию можно найти в документации Pytest


Есть идеи?

10000