flask unit test:如何测试登录用户的请求

Gio*_*lia 12 python unit-testing flask flask-login

我正在为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)
Run Code Online (Sandbox Code Playgroud)

会话cookie值是我从浏览器中的真实登录获得的值.

我错过了什么?

Daz*_*all 22

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')
Run Code Online (Sandbox Code Playgroud)

用户对象myuserid的id 在哪里.