Google App Engine:Webtest模拟登录用户和管理员

时间:2010-08-27 18:17:37

标签: python google-app-engine

从webtest文档我了解到:

  

模拟的最佳方式   如果你的应用程序验证   在environ ['REMOTE_USER']中查看   如果有人通过身份验证那么你   可以简单地设置该值,如:

app.get('/secret', extra_environ=dict(REMOTE_USER='bob'))

我正在尝试做同样的事情,但是在Google App引擎环境中。我想模拟登录用户和管理员用户。

如果可能,我必须在extra_environ中设置哪些字典值才能完成此操作?

1 个答案:

答案 0 :(得分:6)

设置用户:

os.environ['USER_EMAIL'] = 'info@example.com'

设置管理员

os.environ['USER_IS_ADMIN'] = '1'

这就是我整个测试的样子。我的例子使用webtest,nose,nosegae和gaetestbed。

class TestingRoutes(WebTestCase, unittest.TestCase):

    APPLICATION = application()

    def tearDown(self):
        os.environ['USER_EMAIL'] = ''
        os.environ['USER_IS_ADMIN'] = ''

    #AdminIndex .....
    def test_adminindex_no_user(self):
        #No user: redirect to login form
        response = app.get( url_map['adminindex'] )
        self.assertRedirects(response)

    def test_adminindex_user(self):      
        os.environ['USER_EMAIL'] = 'info@example.com'
        response = app.get( url_map['adminindex'] )
        self.assertForbidden(response)

    def test_adminindex_admin(self):
        os.environ['USER_EMAIL'] = 'info@example.com'
        os.environ['USER_IS_ADMIN'] = '1'
        response = app.get( url_map['adminindex'] )
        self.assertOK(response)

希望它有所帮助。