我正在使用GAE testbed服务,当我运行users.get_current_user()
时,我得到None
,即
>>> 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()
返回实际用户?
感谢阅读。
答案 0 :(得分:18)
要模拟管理员用户的登录,您可以在测试功能中的任意位置调用:
self.testbed.setup_env(
USER_EMAIL = 'test@example.com',
USER_ID = '123',
USER_IS_ADMIN = '1',
overwrite = True)
请注意,您需要使用overwrite=True
参数!
答案 1 :(得分: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'
Per Elliot de Vries评论,对于管理用户:
>>> os.environ['USER_IS_ADMIN'] = '1'