python - flask 单元测试 : send cookies after modifying the session

标签 python session cookies flask flask-login

我正在为我的 flask 应用程序编写一些单元测试,我需要模拟来自已登录用户的请求(我正在使用 flask 登录)。

我学会了here为此,我需要修改 session 并添加用户 ID 和 _fresh 参数:

with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['user_id'] = 'myuserid'
        sess['_fresh'] = True
    resp = c.get('/someurl')

我的问题是我需要连同请求一起发送一些其他 cookie。 有点像

headers = Headers({'Cookie':'MYCOOKIE=cookie_value;'})
with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['user_id'] = 'myuserid'
        sess['_fresh'] = True
    resp = c.get('/someurl', headers=headers)

但是当我执行这个请求时, session 连同我设置的变量一起“消失”了。

我认为(IRC 上的其他人也有同样的想法)这是因为我对 cookie header 的显式定义覆盖了包含 session cookie 的 header 。

我的问题是:有没有办法在不删除 session 的情况下设置我的 cookie?

如果没有,有没有办法在我修改 session 后提取 session cookie,以便我可以将它手动添加到 headers 对象中的 cookie 列表中?

最佳答案

解决方案比我想象的要容易得多。

test client 对象有一个方法set_cookie,所以代码应该是:

with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['user_id'] = 'myuserid'
        sess['_fresh'] = True
    c.set_cookie('localhost', 'MYCOOKIE', 'cookie_value')
    resp = c.get('/someurl')

关于python - flask 单元测试 : send cookies after modifying the session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16282576/

相关文章:

python - 将 imshow 与共享 x 轴与 matplotlib 一起使用

javascript - ZK:保持 session 存活

asp.net-mvc-3 - 如何在我的所有 View 上获得可用的服务堆栈 session ?

CakePHP 3 : Cookies tutorial

php - 禁用 cookie 时 PHP session 如何工作?

redirect - 谷歌分析 : cross domain tracking + 301 redirect

Python 的 NLTK 文档

python - 比较 2 个列表列表的内容

node.js - NodeJS Express 删除同一用户的所有 session

Python:将 "\"更改为 "\\"