Automatizar os testes de integração local com o AWS SAM - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Automatizar os testes de integração local com o AWS SAM

Embora você possa usar Introdução aos testes com sam local invoke para testar o código manualmente, o AWS SAM também permite que você teste o código usando testes de integração automatizados. O teste de integração ajuda você a detectar problemas no início do ciclo de desenvolvimento, a melhorar a qualidade do código e a economizar tempo, ao mesmo tempo que reduz os custos.

Para criar testes de integração automatizados no AWS SAM, primeiro execute testes nas funções do Lambda locais antes da implantação na Nuvem AWS. O comando Introdução aos testes com sam local start-lambda inicia um endpoint local que emula o endpoint de invocação do Lambda. Você pode invocá-lo a partir de seus testes automatizados. Como esse endpoint emula o endpoint de invocação do Lamba, você pode escrever testes uma vez e depois executá-los (sem qualquer modificação) na função do Lambda local ou em uma função do Lambda implantada. Você também pode executar os mesmos testes para uma pilha implantada do AWS SAM em seu pipeline de CI/CD.

Como funciona:

  1. Inicie o endpoint local do Lambda.

    Inicie o endpoint local do Lambda executando o seguinte comando no diretório que contém seu modelo do AWS SAM:

    sam local start-lambda

    Esse comando inicia um endpoint local no http://127.0.0.1:3001 que emula AWS Lambda. Você pode executar seus testes automatizados nesse endpoint local do Lambda. Quando você invoca esse endpoint usando o AWS CLI ou SDK, ele executa localmente a função do Lambda especificada na solicitação e retorna uma resposta.

  2. Execute um teste de integração no endpoint Lambda local.

    No teste de integração, você pode usar o AWS SDK para invocar a função do Lambda com dados de teste, aguardar a resposta e verificar se a resposta é a esperada. Para executar o teste de integração localmente, você deve configurar o AWS SDK para enviar uma chamada de API Lambda Invoke para invocar o endpoint local do Lambda que você iniciou na etapa anterior.

    Veja a seguir um exemplo de Python (os AWS SDKs para outras linguagens têm configurações semelhantes):

    import boto3 import botocore # Set "running_locally" flag if you are running the integration test locally running_locally = True if running_locally: # Create Lambda SDK client to connect to appropriate Lambda endpoint lambda_client = boto3.client('lambda', region_name="us-west-2", endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=botocore.client.Config( signature_version=botocore.UNSIGNED, read_timeout=15, retries={'max_attempts': 0}, ) ) else: lambda_client = boto3.client('lambda') # Invoke your Lambda function as you normally usually do. The function will run # locally if it is configured to do so response = lambda_client.invoke(FunctionName="HelloWorldFunction") # Verify the response assert response == "Hello World"

    Você pode usar esse código para testar as funções do Lambda implantadas configurando running_locally como False. Isso configura o AWS SDK ao qual se conectar AWS Lambda no AWS Cloud.