2013-04-26 112 views
9

我正在为我的烧瓶Web应用程序编写一些单元测试,并试图测试匿名用户发出的请求和日志记录之间的响应差异在用户中。烧瓶单元测试:如何测试来自登录用户的请求

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

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

我认为这足以发送标头session cookie,但它不起作用。

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) 

其中session cookie值是我从浏览器中的真实登录名获得的值。

我错过了什么?

回答

17

烧瓶登录查找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。

+1

你知道为什么如果我在修改会话后在请求中发送一个cookie,应用程序不会看到它吗?是因为当我修改会话时,我已经发送了一些头文件或什么? – 2013-04-29 13:41:00