如何在PyCharm中运行pytest测试时查看全部运行时警告?
你提到命令行运行pytest也得到相同结果,说明问题根源不在PyCharm,而是pytest的警告过滤规则或配置导致的。试试以下几个方案:
检查并修改pytest配置文件
项目根目录下的pytest.ini、tox.ini或setup.cfg文件里,可能存在filterwarnings配置项屏蔽了大量警告。比如如果有类似:[pytest] filterwarnings = ignore::DeprecationWarning ignore::UserWarning这种配置会直接忽略对应类型的警告,只统计数量。可以把
filterwarnings改成default,或者注释掉这些ignore规则:[pytest] filterwarnings = default这样会恢复默认的警告显示行为。
用正确的pytest参数强制显示所有警告
在PyCharm的运行/调试配置中,将附加参数设置为:-W default --warnings=always-W default会重置警告过滤规则为默认,--warnings=always会强制显示所有警告,不受配置文件设置影响。如果想精简输出,还可以加上--no-header --no-summary避免多余的表头和摘要,聚焦警告内容。排查代码层面的警告过滤
有些测试代码或依赖库可能通过warnings.filterwarnings()主动忽略了警告。可以在测试入口文件(比如conftest.py)最顶部添加以下代码,强制开启所有警告:import warnings # 取消所有警告过滤,强制显示 warnings.simplefilter("always")验证命令行参数是否生效
先在命令行运行pytest -W default --warnings=always,确认能看到所有警告内容后,再把相同参数复制到PyCharm的运行配置里,确保参数配置正确。
修改完配置或参数后,重启PyCharm的运行配置再执行测试,应该就能看到完整的警告内容了。
内容的提问来源于stack exchange,提问作者Frank Tap

