我认为您不想隐藏所有警告,而只想隐藏那些不相关的警告。在这种情况下,来自导入的 python 模块的弃用警告。
阅读有关 Warnings Capture 的 pytest 文档:
-W 命令行选项和 filterwarnings ini 选项都基于 Python 自己的 -W option 和 warnings.simplefilter,因此请参阅 Python 文档中的这些部分了解其他示例和高级用法。
因此您可以使用 python 的 -W 选项过滤警告!
似乎pytest 完全删除了过滤器,因为它在运行时显示了所有DeprecationWarning,并且Python 的关于Default Warning Filters 的文档清楚地说明了:
在常规发布版本中,默认警告过滤器具有
以下条目(按优先顺序):
default::DeprecationWarning:__main__
ignore::DeprecationWarning
ignore::PendingDeprecationWarning
ignore::ImportWarning
ignore::ResourceWarning
因此,在您的情况下,如果您想过滤您想要忽略的警告类型,例如 DeprecationWarning,只需运行带有 -W 选项的 pytest 命令:
$ pytest path-to-test-folder -W ignore::DeprecationWarning
编辑:来自colini的评论,可以按模块过滤。忽略所有 sqlalchemy 的弃用警告的示例:
ignore::DeprecationWarning:sqlalchemy.*:
然后您可以在pytest 的输出中列出已安装的模块,这些模块会产生过多的噪音
与文件一起使用而不是在命令行中使用:
您可能更喜欢在 pytest.ini 文件中列出这些过滤器:
[pytest]
filterwarnings =
ignore::DeprecationWarning