2013-04-26 376 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