Automatize os testes de integração local com 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á.

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

Embora você possa usar Introdução aos testes com sam local invoke para testar o código manualmente, AWS SAM também permite testar seu 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 AWS SAM, primeiro você executa testes nas funções locais do Lambda antes de implantar 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: 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 Lambda especificada na solicitação e retorna uma resposta.

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

    Em seu teste de integração, você pode usar o AWS SDK para invocar sua função Lambda com dados de teste, aguardar a resposta e verificar se a resposta é o que você espera. 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.

    A seguir está um exemplo de Python (as AWS SDKs 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 na AWS nuvem.