Pacote google.appengine.ext.testbed

Resumo

Um módulo para o uso de stubs de serviço para teste.

Para testar aplicativos que usam serviços do App Engine, como o armazenamento de dados, os desenvolvedores podem usar as implementações do stub disponíveis. O comportamento dos stubs de serviço é igual ao do serviço original, mas não causa efeitos colaterais permanentes. Com o stub do armazenamento de dados, por exemplo, é possível gravar entidades na memória sem armazená-las no armazenamento de dados real. Com o módulo do testbed, o uso desses stubs para testes fica mais fácil.

Exemplo:

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)
Ativar stubs e desativar serviços
Com o módulo do testbed, é possível usar stubs para os seguintes serviços:
  • capability_service

  • channel

  • datastore_v3 (também conhecido como armazenamento de dados)

  • images (somente para dev_appserver)

  • mail (somente para dev_appserver)

  • memcache

  • taskqueue

  • urlfetch

  • user

  • xmpp

Para usar um stub de serviço específico, chame self.init_SERVICENAME_stub(). Com esta chamada, as chamadas para o serviço serão substituídas por chamadas para o stub de serviço. Se você quiser desativar quaisquer chamadas a um serviço específico, chame self.init_SERVICENAME_stub(enable=False). Essa chamada pode ser útil se você quiser testar um código que não pode usar um determinado serviço.

Variáveis de ambiente

Os stubs de serviço do App Engine geralmente dependem de variáveis de ambiente. Por exemplo, no stub do armazenamento de dados, os.environ[‘APPLICATION_ID’] é usado para armazenar entidades vinculadas a um aplicativo específico. Os valores padrão serão usados pelo testbed caso outros não sejam fornecidos, mas você pode alterá-los com self.setup_env().

class google.appengine.ext.testbed.EmulatorSupportCheckersource

Bases: objeto

Uma classe estática. Verificação da compatibilidade com o emulador do armazenamento de dados.

classmethod check()source

Verificação da necessidade de uso do armazenamento de dados em nuvem.

Em um processo de teste unittest, a primeira chamada para esse método é usada para definir o valor de _use_datastore_emulator e _api_port. Com as chamadas subsequentes para esse método, é possível ler _use_datastore_emulator.

Retorna

Um booleano que indica se o armazenamento de dados em nuvem precisa ser usado.

classmethod get_api_port()source

O número inteiro da porta detectada pelo api_server é retornado.

classmethod get_emulator_port()source

O número inteiro da porta detectada pelo emulador do armazenamento de dados é retornado.

exception google.appengine.ext.testbed.Errorsource

Bases: exceptions.Exception

Tipo de erro do testbed.

exception google.appengine.ext.testbed.NotActivatedErrorsource

Bases: google.appengine.ext.testbed.Error

É gerado se a instância do testbed usada não estiver ativada.

exception google.appengine.ext.testbed.StubNotSupportedErrorsource

Bases: google.appengine.ext.testbed.Error

É gerado se um stub de serviço não compatível for acessado.

class google.appengine.ext.testbed.Testbedsource

Bases: objeto

Classe de APIs para a manipulação de stubs para teste.

Com essa classe, é possível substituir os serviços do App Engine por implementações de stub falsas. Esses stubs têm um comportamento semelhante ao das APIs reais, mas sem invocar os serviços substituídos.

Para usar um stub de serviço falso ou desativar um serviço real, invoque os métodos init_*_stub correspondentes dessa classe.

activate()source

Ativação do testbed.

A invocação desse método também atribui valores padrão a variáveis de ambiente exigidas pelos serviços do App Engine, como os.environ[‘APPLICATION_ID’]. Defina valores personalizados com setup_env().

deactivate()source

Desativação do testbed.

Com este método, o proxy da API e as variáveis de ambiente são restaurados para o estado em que estavam antes da chamada de activate().

Gera

NotActivatedError – se o método for chamado antes de activate()

get_stub(service_name)source

Aquisição do stub de um serviço.

Parâmetros

service_name – o nome do serviço.

Retorna

O stub para service_name.

Gera
  • NotActivatedError – se o testbed não está ativado.

  • StubNotSupportedError – se o serviço não é compatível com o testbed.

  • StubNotEnabledError – se o stub de serviço não foi ativado.

init_all_stubs(enable=True)source

Ativação de todos os stubs do testbed conhecidos.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_app_identity_stub(enable=True)source

Ativação do stub de identidade do aplicativo.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_blobstore_stub(enable=True)source

Ativação do stub do blobstore.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_capability_stub(enable=True)source

Ativação do stub de capacidade.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_channel_stub(enable=True)source

Ativação do stub do canal.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

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

Ativação do stub do armazenamento de dados.

O argumento datastore_file pode ser configurado para o caminho de um arquivo do armazenamento de dados existente ou None (padrão) para que um armazenamento de dados na memória, inicialmente vazio, seja usado. Se você usar o stub do sqlite e definir datastore_file, as alterações aplicadas em um teste serão gravadas no arquivo. Se você usar o stub do armazenamento de dados padrão, as alterações não serão salvas no disco, a menos que você defina save_changes=True.

Parâmetros
  • enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

  • datastore_file – nome do arquivo de um arquivo do armazenamento de dados dev_appserver.

  • use_sqlite – True para usar o stub do Sqlite, ou False (padrão) para usar o stub do arquivo.

  • auto_id_policy – como é feita a atribuição de códigos automáticos pelo stub do armazenamento de dados. Este valor pode ser AUTO_ID_POLICY_SEQUENTIAL ou AUTO_ID_POLICY_SCATTERED.

  • **stub_kw_args – argumentos de palavras-chave transmitidos para o stub de serviço.

Gera

StubNotSupportedError – se datastore_sqlite_stub for None.

init_files_stub(enable=True)source

Ativação do stub da API Files.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_images_stub(enable=True, **stub_kwargs)source

Ativação do stub de imagens.

O stub de serviço de imagens está disponível apenas no dev_appserver porque a biblioteca PIL é usada.

Parâmetros
  • enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

  • **stub_kwargs – argumentos de palavras-chave transmitidos para o stub de serviço.

init_logservice_stub(enable=True)source

Ativação do stub do serviço de registro.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

Gera

StubNotSupportedError – se o stub de serviço de registro não estiver disponível.

init_mail_stub(enable=True, **stub_kw_args)source

Ativação do stub de e-mail.

O stub de serviço de e-mail está disponível apenas no dev_appserver porque o módulo subprocess é usado.

Parâmetros
  • enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

  • **stub_kw_args – argumentos de palavras-chave transmitidos para o stub de serviço.

init_memcache_stub(enable=True)source

Ativação do stub do memcache.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_modules_stub(enable=True)source

Ativação do stub dos módulos.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_search_stub(enable=True)source

Ativação do stub de pesquisa.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

init_taskqueue_stub(enable=True, **stub_kw_args)source

Ativação do stub da fila de tarefas.

Parâmetros
  • enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

  • **stub_kw_args – argumentos de palavras-chave transmitidos para o stub de serviço.

init_urlfetch_stub(enable=True, urlmatchers=None)source

Ativação do stub de urlfetch.

No stub de serviço urlfetch, o módulo urllib é usado para fazer solicitações. No appserver, o urllib também depende da infraestrutura do urlfetch. Portanto, o uso deste stub não terá efeito.

Parâmetros
  • enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

  • urlmatchers – sequência inicial opcional de pares (correspondente, coletor) para preencher urlmatchers_to_fetch_functions. Os correspondentes transmitidos aqui, se houver, têm precedência sobre os correspondentes padrão que despacham o acesso ao GCS.

init_user_stub(enable=True, **stub_kw_args)source

Ativação do stub de usuário.

Parâmetros
  • enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

  • **stub_kw_args – argumentos de palavras-chave transmitidos para o stub de serviço.

init_xmpp_stub(enable=True)source

Ativação do stub do XMPP.

Parâmetros

enable – True se o serviço falso precisar ser ativado ou False se o serviço real precisar ser desativado.

setup_env(overwrite=False, **kwargs)source

Configuração de variáveis de ambiente padrão e personalizadas.

Por padrão, todos os itens em DEFAULT_ENVIRONMENT serão criados sem serem especificados. Para definir um valor diferente do padrão ou transmitir uma variável de ambiente personalizada, transmita um argumento de palavra-chave correspondente.

Exemplo:

# 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')

Para substituir os valores definidos por uma invocação anterior, transmita overwrite=True. A transmissão deste valor não resultará em uma entrada OVERWRITE no os.environ.

Parâmetros
  • overwrite – booleano, indica se é necessário substituir itens pelas entradas correspondentes em os.environ.

  • **kwargs – variáveis de ambiente a serem definidas. O nome do argumento estará em letras maiúsculas e será usado como chave em 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)source

Encaminhamento de solicitações do urlfetch do Google Cloud Storage para gcs_dispatcher.

google.appengine.ext.testbed.urlmatcher_for_gcs_stub(url)source

Indica se um URL precisa ser gerenciado pelo stub do Cloud Storage.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2