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

如何在FastAPI TestClient中设置带expires或max_age的Cookie?

在FastAPI TestClient中设置带max_age/expires的Cookie

FastAPI的TestClient基于requests.Session,其cookies属性是RequestsCookieJar对象,你可以通过以下两种方式设置带有max_age或expires的Cookie:

方法一:直接调用set方法传入参数

RequestsCookieJar的set方法支持通过关键字参数传入max_age或expires,无需重新赋值test_client.cookies:

test_client.cookies.set(
    cookie_key,
    str(cookie_value),
    path=path,
    max_age=3600,  # 有效期1小时,单位为秒
    # 或者设置expires为时间戳或带时区的datetime对象
    # expires=datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(hours=1)
)

方法二:构造Cookie实例添加

如果需要更精细的控制,可以手动构造标准库的Cookie对象,再添加到CookieJar中:

from http.cookies import Cookie
import datetime

# 构造Cookie对象
cookie = Cookie(
    name=cookie_key,
    value=str(cookie_value),
    path=path,
    max_age=3600,
    # expires接受时间戳,这里设置为1小时后
    expires=(datetime.datetime.utcnow() + datetime.timedelta(hours=1)).timestamp(),
    secure=False,  # 根据实际场景设置是否仅HTTPS传输
    httponly=False,  # 根据实际场景设置是否允许JS读取
)

# 添加到TestClient的CookieJar
test_client.cookies.set_cookie(cookie)

注意:原代码中test_client.cookies = cookies是多余操作,set或set_cookie方法会直接修改原CookieJar对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:47:10