gpt4 book ai didi

flask - 对 Flask session 进行单元测试 - 无法使用 session_transaction 重现失败

转载 作者:行者123 更新时间:2023-12-03 15:26:11 28 4
gpt4 key购买 nike

我正在测试 Flask 应用程序(Flask 0.9),特别是我有一个 session 装置,我想以记录的方式运行,就像这样(据我所知):

from flask import Flask, session
app = Flask(__name__)

@app.route('/', methods=['POST'])
def m():
logging.error(session) # expect {'x': 1}
return ""

with app.test_request_context() as trc:
with app.test_client() as c:
with c.session_transaction() as sess:
sess['x'] = 1
c.post()

这按预期工作,输出如下所示:
ERROR:root:<SecureCookieSession {'x': 1}>

不幸的是,我遇到了一个意想不到的结果,其中 session 数据没有在端点函数中设置,即输出是这样的:
ERROR:root:<SecureCookieSession {}>

此问题仅在从我的单元测试框架运行时出现。就目前而言,尽管我已经做出了相当大的努力 with a gist of some of this effort here,但我无法用退化的案例重现这个问题。 .重点是我已经包括了 itsdangerousGoogle App Engine testbed ,预计其中一个可能是原因。

在我自己的系统上,我已经超越了要点,几乎完全复制了我的单元测试框架,试图将其隔离开来。同样,我从我的测试框架中删除了越来越多的相关代码。就这一点而言,我无法想到可能影响结果的退化案例与我的精简框架之间的差异。我已经穿越了 c.post()调用 pdb 试图找出这种恶性的原因,但尚未收集任何有用的见解。

总而言之,我将不胜感激关于问题可能出在哪里的一些指导或建议。什么可能以这种方式影响 Werkzeug 上下文,以致 session_transaction不被尊重?

最佳答案

就我而言,我通过加载配置文件将 cookie 自动限制到特定域。通过即时更新配置,我能够在单元测试时让 cookie 工作。设置 SESSION_COOKIE_DOMAIN属性(property)到None ,所有域(即本地主机)都能够设置 session 。

app.config.update(                                                     
SESSION_COOKIE_DOMAIN = None
)

您可能想要摆弄 Configuration Handling 下描述的配置设置。在文档中。

关于flask - 对 Flask session 进行单元测试 - 无法使用 session_transaction 重现失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528679/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com