13

私はGAEテストベッドサービスを使用しています。実行すると、次のよう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()、実際のユーザーを返すにはどうすればよいでしょうか。

読んでくれてありがとう。

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 に答える