2013-07-02 54 views
3

在我的一些RequestHandler意見單元測試webapp2的RequestHandler,我從一個會話中獲取的信息,以確保當前的用戶登錄(自定義AUTH)需要會話

我無法嘲諷這個單元測試。在我的RequestHandler類

helper方法:

@webapp2.cached_property 
def get_account(self): 
    user_session = self.session.get('user-id') 
    if user_session: 
     user_account = helpers.get_username_data_from_session(self.session.get('user-id')) 
     return user_account 

在實現(我想考什麼)查看get方法看起來是這樣的(例子):

def get(self): 
    account = self.get_account 
    if not account: 
     self.error(302) 

我沒有能夠找到一種方法來模擬這個測試getHandler類的get/post方法。

任何幫助將會很棒!

回答

4

片段從http://www.recursion.org/2011/10/12/testing-webapp2-sessions-with-webtest

import webtest 
import webapp2 as webapp 
from webapp2_extras import sessions 
from webapp2_extras.securecookie import SecureCookieSerializer 

SUPER_SECRET = 'my-super-secret' 

app = webapp.WSGIApplication(config={ 
    'webapp2_extras.sessions': { 
     'secret_key': SUPER_SECRET 
    }, 
}) 

class SomeTestCase(unittest.TestCase): 

    def setUp(self): 

     self.app = webtest.TestApp(app) 
     self.testbed = testbed.Testbed() 
     self.testbed.activate() 

    def tearDown(self): 
     self.testbed.deactivate() 

    def test_get_index(self): 
     session = {'key': 'value'} 
     secure_cookie_serializer = SecureCookieSerializer(
      SUPER_SECRET 
     ) 
     serialized = secure_cookie_serializer.serialize(
      'session', session 
     ) 
     headers = {'Cookie': 'session=%s' % serialized} 

     response = self.app.get('/', headers=headers) 

     assert response.status_int == 200 
+0

這應該是公認的答案,謝謝! – audiodude