如何使用 Pytest 忽略特定警告?

问题描述 投票:0回答:1

Pytest 有 @pytest.mark.filterwarnings

使用:

@pytest.mark.filterwarnings("ignore::DeprecationWarning")

就像一个魅力,但我不想忽略所有 DeprecationWarning 我想忽略一个特定的:

warnings.warn("Please use new_module.", DeprecationWarning)

我尝试这样做:

@pytest.mark.filterwarnings("ignore::DeprecationWarning: Please use new_module.")

但这不起作用。我找不到过滤特定消息的正确语法。

如何做到这一点?

python pytest
1个回答
0
投票

https://docs.python.org/3/library/warnings.html#describing-warning-filters

各个警告过滤器被指定为一系列用冒号分隔的字段: 操作:消息:类别:模块:行

您还可以在pytest中使用通配符


所以,假设我收到以下警告:

tests/test_something.py::test_create_something
  /home/.venv/lib/python3.10/site-packages/httpx/_client.py:1426: DeprecationWarning: The 'app' shortcut is now deprecated. Use the explicit style 'transport=ASGITransport(app=...)' instead.
    warnings.warn(message, DeprecationWarning)

如果我只想过滤掉该警告,那么我必须在 pyproject.toml:

中写入
[tool.pytest.ini_options]
filterwarnings = [
    "ignore:.*the 'app' shortcut is now deprecated.*:DeprecationWarning:httpx",,
]
© www.soinside.com 2019 - 2024. All rights reserved.