2013-04-26 5 views
9

मैं अपने फ्लास्क वेब एप्लिकेशन के लिए कुछ यूनिट परीक्षण लिख रहा हूं और मैं अज्ञात उपयोगकर्ता द्वारा किए गए अनुरोध और लॉग के बीच प्रतिक्रिया में मतभेदों का परीक्षण करने की कोशिश कर रहा हूं उपयोगकर्ता मेंफ्लास्क यूनिट परीक्षण: उपयोगकर्ता में लॉग इन से अनुरोध का परीक्षण कैसे करें

मैं उपयोगकर्ता लॉगिन/लॉगआउट को लागू करने के लिए Flask-Login एक्सटेंशन का उपयोग कर रहा हूं।

स्पष्ट रूप से मैं एक अनाम अनुरोध करने में सक्षम हूं, लेकिन मैं लॉग इन उपयोगकर्ता से अनुरोध कैसे अनुकरण करूं?

मैंने सोचा कि हेडर में 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) 

जहां सत्र कुकी मूल्य एक मूल्य है जो मुझे अपने ब्राउज़र में एक वास्तविक लॉगिन से मिला है।

मुझे क्या याद आ रही है?

उत्तर

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 अपने user object की आईडी है।

+1

क्या आपको पता है कि सत्र को संशोधित करने के बाद मैं अनुरोध में कुकी क्यों भेजता हूं, तो एप्लिकेशन इसे नहीं देखता है? क्या ऐसा इसलिए है क्योंकि जब मैं सत्र को संशोधित करता हूं तो मैं पहले ही कुछ हेडर भेजता हूं या क्या? –

संबंधित मुद्दे