运行pytest时出现Marshmallow、Flask相关弃用警告如何解决
警告清除方案
你当前贴出的测试用例代码本身没有写法问题,两个警告均来自项目其他代码的旧写法、或是依赖包的版本兼容问题,对应解决方法如下:
1. 处理 RemovedInMarshmallow4Warning 警告
该警告触发原因是项目中定义Marshmallow字段时,将自定义元数据直接作为关键字参数传入,属于Marshmallow 3.x版本的废弃写法,调整即可:
- 旧写法示例(找到项目中所有这类写法):
# 旧写法:元数据直接当关键字参数传 price = fields.Integer(places=0)
- 修正为显式传
metadata参数:
# 新写法:所有自定义元数据放到metadata字典里 price = fields.Integer(metadata={"places": 0})
2. 处理 ItsDangerous 废弃导入警告
该警告是旧版本Flask的兼容问题,旧版Flask内部会导入itsdangerous.json,而该导入在ItsDangerous 2.1+版本已被移除,两种解决方式可选:
- 方案一(推荐):升级Flask版本到2.0及以上,官方已在新版本修复该导入问题
- 方案二(无法升级Flask时用):在项目入口文件或测试目录的
conftest.py头部添加如下代码,手动替换导入:
import itsdangerous import json itsdangerous.json = json
3. 临时屏蔽警告(仅应急使用,不推荐长期用)
如果暂时不需要修复根源问题,只想跑测试时不显示警告,可以通过pytest配置过滤:
- 命令行执行测试时加参数:
pytest -W ignore::RemovedInMarshmallow4Warning -W ignore::DeprecationWarning:flask.json - 或在项目根目录的
pytest.ini添加永久过滤配置:
[pytest] filterwarnings = ignore::RemovedInMarshmallow4Warning ignore::DeprecationWarning:flask.json
内容的提问来源于stack exchange,提问作者JarochoEngineer
相关产品推荐
相关产品推荐

