4

Google App Engine アプリに webapp2_extras.i18n で webapp2 を使用しています。

ここの下部に記載されている単体テスト スクリプトがあります: https://developers.google.com/appengine/docs/python/tools/localunittesting

テスト スクリプトはモデルをインポートし、webapp2 ハンドラーを含めません。これは、テストのターゲットが要求と応答ではなくビジネス ロジック コードであるためです。ただし、私のモデルの中には、format_currencyまたはgettextエラーになるような i18n 関数を呼び出すものがあります。

AssertionError: Request global variable is not set.

webapp2 アプリとリクエストをインスタンス化せずに i18n モジュールを初期化するにはどうすればよいですか?

4

4 に答える 4

4

私は同じ問題を抱えていましたが(uri_forの場合)、テストで次のことを行いました:

app = webapp2.WSGIApplication(
        [webapp2.Route('/', None, name='upload_handler')])

request = webapp2.Request({'SERVER_NAME':'test', 'SERVER_PORT':80,
    'wsgi.url_scheme':'http'})
request.app = app
app.set_globals(app=app, request=request)

# call function that uses uri_for('upload_handler')

リクエストでどの環境変数を設定する必要があるかを推測するために、試行錯誤を行う必要がありました。i18n を呼び出すには、さらに追加する必要があるかもしれません。

于 2013-04-10T18:10:09.333 に答える