如何在pytest中忽略SAWarning警告
解决pytest无法识别SAWarning并忽略的问题
你遇到的问题很常见——因为SAWarning不是Python标准库自带的警告类别,pytest没办法仅通过"SAWarning"这个短名称找到它,所以直接用@pytest.mark.filterwarnings("ignore::SAWarning")会报错。下面给你两种可靠的解决方法:
方法1:使用完整的警告类限定名
直接在过滤规则里写出SAWarning的完整模块路径,pytest就能正确定位到这个警告类了:
import pytest @pytest.mark.filterwarnings("ignore::sqlalchemy.exc.SAWarning") def test_your_function(): # 你的测试代码 pass
方法2:先导入SAWarning类再引用
如果觉得写长路径麻烦,可以先从SQLAlchemy中导入SAWarning,再在过滤规则里直接引用这个类:
import pytest from sqlalchemy.exc import SAWarning @pytest.mark.filterwarnings(f"ignore::{SAWarning}") def test_your_function(): # 你的测试代码 pass
全局忽略(可选)
如果这个警告在很多测试中都会出现,你可以在项目的pytest.ini或者conftest.py里全局配置过滤规则,不用给每个测试函数加注解:
- 在
pytest.ini中添加:[pytest] filterwarnings = ignore::sqlalchemy.exc.SAWarning - 或者在
conftest.py中添加:def pytest_configure(config): config.addinivalue_line( "filterwarnings", "ignore::sqlalchemy.exc.SAWarning" )
这样配置后,所有测试运行时都会自动忽略这个SQLAlchemy的警告啦。
内容的提问来源于stack exchange,提问作者Harm
相关产品推荐
相关产品推荐

