2013-07-02 53 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