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

使用Flask app.test_client结合自定义会话数据库时无法获取Session ID

Flask测试客户端无法读取Cookie中会话ID的问题

我在Flask应用中实现了对接数据库的自定义会话管理,使用app.test_client()模拟请求时遇到了Cookie读取异常的问题。

测试请求代码

with app.test_client() as client:
    if method == 'GET':
        response = client.get(path, query_string=qParams, headers=headers)

已确认请求头headers中包含Cookie: session=03594...。

自定义会话的open_session方法

def open_session(self, app, request):
    sid = request.cookies.get(app.config['SESSION_COOKIE_NAME'])

    # sid is always None when using test_client
    if not sid:
        sid = self.generate_sid()
        return self.session_class(sid=sid, new=True)
    val_str = self.tbObj.get(sid)
    if val_str is not None:
        data = json.loads(val_str)
        return self.session_class(data, sid=sid)
    return self.session_class(sid=sid, new=True)

问题现象

使用app.run()启动应用时,会话管理一切正常;但使用app.test_client()模拟请求时,open_session方法中request.cookies始终为空,导致无法从Cookie中获取会话ID(sid),该问题仅出现在测试场景中。

已尝试的操作

  • 验证过open_session函数在正常运行场景下功能正常
  • 确认测试时request.cookies确实为空
  • 临时解决方案:将sid存入app.config,再在open_session中读取

疑问

  1. 为何在test_client测试场景下request.cookies为空?
  2. 如何确保test_client中Cookie(尤其是会话Cookie)被正确传递和获取?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:32:34