一尘不染

flask单元测试:如何测试已登录用户的请求

flask

我正在为我的Flask Web应用程序编写一些单元测试,并且试图测试匿名用户发出的请求和登录用户之间的响应差异。

我正在使用Flask-Login扩展程序来实现用户登录/注销。

显然,我可以执行匿名请求,但是如何模拟已登录用户的请求?

我认为发送标头中的sessioncookie 就足够了,但是它不起作用。

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值是我从浏览器中的真实登录名获得的值。


阅读 504

收藏
2020-04-06

共1个答案

一尘不染

Flask-Login 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 在哪里。

2020-04-06