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

Flask test_client调用get方法报as_tuple意外关键字参数错误

错误原因

抛出TypeError: __init__() got an unexpected keyword argument 'as_tuple'的核心原因是Flask与依赖库Werkzeug版本不兼容:
当前环境中安装的Werkzeug版本≥2.1.0,该版本已经从EnvironBuilder初始化方法中移除了as_tuple入参,但你安装的Flask版本≤2.0.x,其测试客户端逻辑在发起请求时仍会传递这个已被删除的参数,直接触发参数不识别的报错。
除此之外你的测试代码本身存在逻辑缺陷:仅初始化了Flask应用实例,未定义根路径/对应的路由处理函数,就算版本兼容问题修复,访问根路径也会返回404状态码,无法通过200状态码的断言。

排查解决步骤
  • 先修复版本兼容问题,两种方案选一种执行即可:
    • 方案1:升级Flask到适配高版本Werkzeug的最新稳定版,执行命令:
      pip install --upgrade flask
      
    • 方案2:若需要保留当前Flask版本,将Werkzeug降级到兼容版本即可,对应Flask 2.0.x的兼容Werkzeug版本为2.0.3,执行命令:
      pip install werkzeug==2.0.3
      
  • 补全测试代码中缺失的路由定义,同时修正test_client的不规范传参,修改后可正常运行的完整代码如下:
import unittest
from flask import Flask

app = Flask(__name__)

# 定义根路径路由,匹配访问路径
@app.route("/")
def index():
    return "test ok"

class FlaskTest(unittest.TestCase):
    def test_index(self):
        # test_client无需传入self参数
        tester = app.test_client()
        response = tester.get("/")
        self.assertEqual(response.status_code, 200)

if __name__ == '__main__':
    unittest.main()

运行修改后的代码即可得到测试通过的结果。

内容的提问来源于stack exchange,提问作者noobatcoding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:45:35