我正在为我的 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/