Integración con pruebas automatizadas - AWS Serverless Application Model

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Integración con pruebas automatizadas

Puede usar el comando sam local invoke para probar manualmente el código mediante la ejecución local de las funciones de Lambda. Con él AWS SAMCLI, puede crear fácilmente pruebas de integración automatizadas ejecutando primero las pruebas en las funciones Lambda locales antes de implementarlas en la AWS nube.

El sam local start-lambda comando inicia un punto final local que emula el punto final AWS Lambda invocado. Puede invocarlo desde sus pruebas automatizadas. Como este punto final emula el punto final de AWS Lambda invocación, puede escribir pruebas una vez y, a continuación, ejecutarlas (sin modificaciones) en la función Lambda local o en una función Lambda implementada. También puede ejecutar las mismas pruebas en una AWS SAM pila implementada en su canalización de CI/CD.

Así es como funciona el proceso:

  1. Inicie el punto de conexión Lambda local.

    Inicie el punto final Lambda local ejecutando el siguiente comando en el directorio que contiene la plantilla AWS SAM :

    sam local start-lambda

    Este comando inicia un punto de conexión local en http://127.0.0.1:3001 que emula AWS Lambda. Puede ejecutar las pruebas automatizadas en este punto de conexión Lambda local. Al invocar este punto final mediante el SDK AWS CLI o el SDK, ejecuta localmente la función Lambda que se especifica en la solicitud y devuelve una respuesta.

  2. Ejecute una prueba de integración en el punto de conexión Lambda local.

    En la prueba de integración, puede usar el AWS SDK para invocar la función Lambda con los datos de la prueba, esperar la respuesta y comprobar que la respuesta es la esperada. Para ejecutar la prueba de integración localmente, debe configurar el SDK de AWS para que envíe la llamada a la API invocación de Lambda al punto de conexión local de Lambda iniciado en el paso anterior.

    El siguiente es un ejemplo de Python (los AWS SDK para otros lenguajes tienen configuraciones similares):

    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"

    Puede usar este código para probar las funciones de Lambda implementadas configurando running_locally en False. Esto configura el AWS SDK al que se debe conectar AWS Lambda en la AWS nube.