You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:15:07