google.appengine.ext.testbed パッケージ

概要

テスト用にサービススタブを使用するためのモジュール。

データストアなどの App Engine サービスを使用するアプリケーションをテストするために、デベロッパーは利用可能なスタブ実装を使用できます。サービススタブは、永続的な副次的影響を引き起こすことなく、元のサービスと同様に動作します。たとえば、データストア スタブを使用すると、エンティティを実際のデータストアに格納せずにメモリに書き込むことができます。testbed モジュールでは、テストを容易にするためにこれらのスタブを利用します。

例:

import unittest

from google.appengine.ext import ndb
from google.appengine.ext import testbed

class TestModel(ndb.Model):
  number = ndb.IntegerProperty(default=42)

class MyTestCase(unittest.TestCase):

  def setUp(self):
    # First, create an instance of the Testbed class.
    self.testbed = testbed.Testbed()
    # Then activate the testbed, which will allow you to use
    # service stubs.
    self.testbed.activate()
    # Next, declare which service stubs you want to use.
    self.testbed.init_datastore_v3_stub()
    self.testbed.init_memcache_stub()

  def tearDown(self):
    # Don't forget to deactivate the testbed after the tests are
    # completed. If the testbed is not deactivated, the original
    # stubs will not be restored.
    self.testbed.deactivate()

  def testInsertEntity(self):
    # Because we use the datastore stub, this put() does not have
    # permanent side effects.
    TestModel().put()
    fetched_entities = TestModel.all().fetch(2)
    self.assertEqual(1, len(fetched_entities))
    self.assertEqual(42, fetched_entities[0].number)
スタブを有効にしてサービスを無効にする
testbed モジュールを使用すると、次のサービスにスタブを使用できます。
  • capability_service

  • channel

  • datastore_v3(別名データストア)

  • images(dev_appserver のみ)

  • mail(dev_appserver のみ)

  • memcache

  • taskqueue

  • urlfetch

  • user

  • xmpp

特定のサービススタブを使用するには、self.init_SERVICENAME_stub() を呼び出します。この呼び出しを使用すると、サービスの呼び出しがサービススタブの呼び出しに置き換えられます。特定のサービスの呼び出しを無効にする場合は、self.init_SERVICENAME_stub(enable=False) を呼び出します。この呼び出しは、特定のサービスを使用してはならないコードをテストする場合に便利です。

環境変数

App Engine のサービススタブは環境変数に依存することがあります。たとえば、データストア スタブは os.environ[‘APPLICATION_ID’] を使用して、特定のアプリにリンクされたエンティティを格納します。testbed は、何も指定されていない場合にはデフォルト値を使いますが、self.setup_env() を使用してそれらの値を変更できます。

クラス google.appengine.ext.testbed.EmulatorSupportChecker ソース

ベース: オブジェクト

静的クラス。データストア エミュレータがサポートされているかどうかを確認します。

classmethod check() ソース

クラウド データストアを使用するかどうかを確認します。

unittest テストのプロセスでは、このメソッドの最初の呼び出しで、_use_datastore_emulator および _api_port の値が設定されます。その後、このメソッドを呼び出すと、_use_datastore_emulator を読み取ることができます。

戻り値

クラウド データストアを使用するかどうかを示すブール値。

classmethod get_api_port() ソース

api_server がリッスンする整数のポート番号を返します。

classmethod get_emulator_port() ソース

データストア エミュレータがリッスンする整数のポート番号を返します。

例外 google.appengine.ext.testbed.Error ソース

ベース: exceptions.Exception

testbed の基本エラータイプ。

例外 google.appengine.ext.testbed.NotActivatedError ソース

ベース: google.appengine.ext.testbed.Error

使用されている testbed インスタンスが有効になっていない場合に発生します。

例外 google.appengine.ext.testbed.StubNotSupportedError ソース

ベース: google.appengine.ext.testbed.Error

サポートされていないサービススタブにアクセスした場合に発生します。

クラス google.appengine.ext.testbed.Testbed ソース

ベース: オブジェクト

テスト用のスタブを操作するための API を提供するクラス。

このクラスを使用すると、App Engine サービスを偽装スタブ実装に置き換えることができます。これらのスタブは実際の API と同様に動作しますが、置き換えられたサービスは呼び出されません。

偽装サービススタブを使用するか、または実際のサービスを無効にするには、このクラスの対応する init_*_stub メソッドを呼び出します。

activate() ソース

testbed を有効にします。

このメソッドを呼び出すと、os.environ[‘APPLICATION_ID’] などの App Engine サービスに必要な環境変数にもデフォルト値が割り当てられます。setup_env() でカスタム値を設定できます。

deactivate() ソース

testbed を無効にします。

このメソッドでは、API プロキシと環境変数を activate() が呼び出される前の状態に復元します。

発生

NotActivatedErroractivate() が呼び出される前に呼び出された場合。

get_stub(service_name) ソース

サービスのスタブを取得します。

パラメータ

service_name – サービスの名前。

戻り値

service_name のスタブ。

発生
  • NotActivatedError – testbed が有効になっていません。

  • StubNotSupportedError – サービスが testbed でサポートされていません。

  • StubNotEnabledError – サービススタブが有効になっていません。

init_all_stubs(enable=True) ソース

既知のすべての testbed スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_app_identity_stub(enable=True) ソース

アプリの ID スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_blobstore_stub(enable=True) ソース

blobstore スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_capability_stub(enable=True) ソース

capability スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_channel_stub(enable=True) ソース

channel スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_datastore_v3_stub(enable=True, datastore_file=None, use_sqlite=False, auto_id_policy='sequential', **stub_kw_args) ソース

datastore スタブを有効にします。

datastore_file 引数には、既存のデータストア ファイルのパスを設定するか、None(デフォルト)を指定して、最初は空のメモリ内データストアを使用できます。sqlite スタブを使用して datastore_file を定義した場合、テストで適用する変更がファイルに書き込まれます。デフォルトの datastore スタブを使用すると、save_changes=True を設定しない場合は、変更がディスクに保存されません。

パラメータ
  • enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

  • datastore_file – dev_appserver データストア ファイルのファイル名。

  • use_sqlite – Sqlite スタブを使用する場合は True、file スタブを使用する場合は False(デフォルト)。

  • auto_id_policy – datastore スタブが自動 ID を割り当てる方法。この値は、AUTO_ID_POLICY_SEQUENTIALAUTO_ID_POLICY_SCATTERED のいずれかになります。

  • **stub_kw_args – service スタブに渡されるキーワード引数。

発生

StubNotSupportedError – datastore_sqlite_stub が None の場合。

init_files_stub(enable=True) ソース

Files API スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_images_stub(enable=True, **stub_kwargs) ソース

images スタブを有効にします。

images service スタブでは、PIL ライブラリを使用するため、dev_appserver でのみ使用できます。

パラメータ
  • enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

  • **stub_kwargs – service スタブに渡されるキーワード引数。

init_logservice_stub(enable=True) サービス

log service スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

発生

StubNotSupportedError – logservice スタブは使用できません。

init_mail_stub(enable=True, **stub_kw_args) ソース

mail スタブを有効にします。

email service スタブでは、subprocess モジュールを使用するため、dev_appserver でのみ使用できます。

パラメータ
  • enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

  • **stub_kw_args – service スタブに渡されるキーワード引数。

init_memcache_stub(enable=True) ソース

memcache スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_modules_stub(enable=True) ソース

modules スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_search_stub(enable=True) ソース

search スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

init_taskqueue_stub(enable=True, **stub_kw_args) ソース

taskqueue スタブを有効にします。

パラメータ
  • enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

  • **stub_kw_args – service スタブに渡されるキーワード引数。

init_urlfetch_stub(enable=True, urlmatchers=None) ソース

urlfetch スタブを有効にします。

urlfetch service スタブでは urllib モジュールを使用してリクエストを行います。appserver では、urllib も urlfetch インフラストラクチャに依存しているため、このスタブを使用しても効果はありません。

パラメータ
  • enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

  • urlmatchers – urlmatchers_to_fetch_functions を生成するオプションの(matcher、fetcher)ペアの初期シーケンス。GCS へのアクセスをディスパッチしているデフォルト マッチャーより優先されます。

init_user_stub(enable=True, **stub_kw_args) ソース

users スタブを有効にします。

パラメータ
  • enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

  • **stub_kw_args – service スタブに渡されるキーワード引数。

init_xmpp_stub(enable=True) ソース

xmpp スタブを有効にします。

パラメータ

enable – 偽装サービスを有効にする必要がある場合は True、実際のサービスを無効にする場合は False

setup_env(overwrite=False, **kwargs) ソース

デフォルトおよびカスタムの環境変数を設定します。

デフォルトでは、DEFAULT_ENVIRONMENT 内のすべての項目が指定されずに作成されます。デフォルト以外の値を設定するか、カスタム環境変数を渡すには、対応するキーワード引数を渡します。

例:

# All defaults
testbed_instance.setup_env()
# All defaults, overriding AUTH_DOMAIN
testbed_instance.setup_env(auth_domain='custom')
# All defaults; adds a custom os.environ['CUSTOM'] = 'foo'
testbed_instance.setup_env(custom='foo')

以前の呼び出しで設定された値を上書きするには、overwrite=True を渡します。この値を渡しても、os.environ 内に OVERWRITE エントリは生成されません。

パラメータ
  • overwrite – ブール値。os.environ 内の対応する項目で項目を上書きするかどうかを指定します。

  • **kwargs – 設定する環境変数。引数の名前は大文字になり、os.environ 内のキーとして使用されます。

google.appengine.ext.testbed.urlfetch_to_gcs_stub(url, payload, method, headers, request, response, follow_redirects=False, deadline=None, validate_certificate=None, http_proxy=None) ソース

Google Cloud Storage の urlfetch リクエストを gcs_dispatcher に転送します。

google.appengine.ext.testbed.urlmatcher_for_gcs_stub(url) ソース

Cloud Storage スタブで URL が処理されるかどうかを決定します。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python の App Engine スタンダード環境