我正在为我的Flask Web应用程序编写一些单元测试,并且试图测试匿名用户发出的请求和登录用户之间的响应差异。
我正在使用Flask-Login扩展程序来实现用户登录/注销。
Flask-Login
显然,我可以执行匿名请求,但是如何模拟已登录用户的请求?
我认为发送标头中的sessioncookie 就足够了,但是它不起作用。
session
headers = Headers({'Cookie':['WEBSITE_ID=%s; Domain=adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value, 'WEBSITE_ID=%s; Domain=.adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value, 'session="A VERY LONG STRING"; Path=/; HttpOnly', ]}) rv = app.test_client().get('/', headers=headers)
会话Cookie值是我从浏览器中的真实登录名获得的值。
Flask-Login user_id在会话中寻找,你可以使用以下命令在测试中进行设置session_transaction:
user_id
session_transaction
with app.test_client() as c: with c.session_transaction() as sess: sess['user_id'] = 'myuserid' sess['_fresh'] = True # https://flask-login.readthedocs.org/en/latest/#fresh-logins resp = c.get('/someurl')
用户对象myuserid的ID 在哪里。
myuserid