Фильтры работают так же, как и при использовании аргумента -W
с командой python
(см. python --help
). Формат описан в документации модуля warnings
. Короче говоря, это action:message:category:module:line
, где action
, вероятно, является обязательным, но другие части могут быть опущены.
"ignore:api v1"
попытается сопоставить message
, определив "строку, содержащую регулярное выражениечто начало предупреждающего сообщения должно соответствовать ". Поскольку вы действительно хотите соответствовать category
, вы можете пропустить message
. Это означает, что вы, похоже, просто пропустили одну двоеточие после ignore
, поэтому это правильный формат:
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
def test_ignore_warnings():
import boto3
Однако, вы, вероятно, все равно получите предупреждение, если это произойдет во время импортапакет вне тестовой функции. В этом случае вам может потребоваться указать фильтр глобально в качестве аргумента pytest:
pytest -W "ignore::DeprecationWarning" ./tests/
... или добавить его в pytest.ini :
[pytest]
filterwarnings =
ignore::DeprecationWarning
Если такое глобальное исключение нежелательно, вы можете попытаться ограничить его определенным модулем:
ignore::DeprecationWarning:boto3
Тестирование
Для тестированияВ целях, вы можете использовать следующий код:
import warnings
def something():
warnings.warn("Test", DeprecationWarning)
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
def test_ignore_warnings():
something()