Подтвердить что ты не робот

Google App Engine настроил пользователя при использовании тестового стенда

Я использую службу GAE testbed, и когда я запускаю users.get_current_user(), я получаю None i.e.

>>> 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() возвращал фактического пользователя?

Спасибо за чтение.

4b9b3361

Ответ 1

Чтобы смоделировать знак администратора пользователя, вы можете позвонить в любую точку тестовой функции:

self.testbed.setup_env(
    USER_EMAIL = '[email protected]',
    USER_ID = '123',
    USER_IS_ADMIN = '1',
    overwrite = True)

Обратите внимание, что вам нужно использовать параметр overwrite=True!

Ответ 2

После некоторых экспериментов для меня работало следующее:

>>> os.environ['USER_EMAIL'] = '[email protected]'
>>> os.environ['USER_ID'] = '123'
>>> users.get_current_user()
users.User(email='[email protected]',_user_id='123')

Я надеюсь, что это хорошее решение, и этот ответ помогает следующему человеку столкнуться с этой проблемой.

EDIT: Связанные переменные

Чтобы избежать /google/appengine/api/users.py:115 - AssertionError: assert _auth_domain

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

Комментарий от пользователя для Elliot de Vries для административного пользователя:

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