Как избавиться от предупреждений сторонних библиотек при выполнении юнит-тестов? - PullRequest
2 голосов
/ 25 марта 2020

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

==================================== warnings summary ====================================
c:\dev\pyrepo\lib\site-packages\patsy\constraint.py:13
  c:\dev\pyrepo\lib\site-packages\patsy\constraint.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 Ответ

3 голосов
/ 25 марта 2020

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

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

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

pytest . -W ignore::DeprecationWarning

Это команда скроет warnings summary, но покажет 1 passed, 1 warning сообщение

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

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

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

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

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

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

  • с использованием PYTHONWARNINGS переменной среды

PYTHONWARNINGS="ignore::DeprecationWarning" pytest .

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

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

...