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