13

我正在使用 GAE测试平台服务,当我运行时,users.get_current_user()我得到了Noneie

>>> import sys
>>> sys.path.append("/usr/local/google_appengine") # for Mac OS X
>>> from google.appengine.api import users
>>> from google.appengine.ext import testbed
>>> testbed = testbed.Testbed()
>>> testbed.activate()
>>> testbed.init_user_stub()
>>> users.get_current_user() == None
True

这是预期的结果。但是,我想在运行一些单元测试时登录一个假用户。

如果可能(我希望它会),testbed从命令行运行时如何登录用户以get_current_user()返回实际用户?

谢谢阅读。

4

2 回答 2

18

要模拟管理员用户的登录,您可以在测试函数中的任何位置调用:

self.testbed.setup_env(
    USER_EMAIL = 'test@example.com',
    USER_ID = '123',
    USER_IS_ADMIN = '1',
    overwrite = True)

注意需要用到overwrite=True参数!

于 2012-06-01T15:09:47.790 回答
3

经过一些实验,以下对我有用:

>>> os.environ['USER_EMAIL'] = 'a@b.c'
>>> os.environ['USER_ID'] = '123'
>>> users.get_current_user()
users.User(email='a@b.c',_user_id='123')

我希望这是一个很好的解决方案,这个答案可以帮助下一个人遇到这个问题。

编辑:相关变量

避免 /google/appengine/api/users.py:115 - AssertionError: assert _auth_domain

>>> os.environ['AUTH_DOMAIN'] = 'testbed'

根据 Elliot de Vries 的评论,对于管理用户:

>>> os.environ['USER_IS_ADMIN'] = '1'
于 2011-06-03T16:42:07.343 回答