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 utilizar elsam local invokepara probar manualmente el código ejecutando funciones Lambda localmente. Con laAWS SAMCLI, puede crear fácilmente pruebas de integración automatizadas ejecutando primero pruebas contra las funciones locales de Lambda antes de implementarlas en elAWSCloud.

Lasam local start-lambdainicia un endpoint local que emula elAWS Lambdainvocar endpoint. Puede invocarlo desde sus pruebas automatizadas. Porque este extremo emula elAWS Lambdainvocar un punto de enlace, puede escribir pruebas una vez y ejecutarlas (sin ninguna modificación) en la función de Lambda local o en una función de Lambda implementada. También puede ejecutar las mismas pruebas en un implementadoAWS SAMpila en su canalización de CI/CD.

Así es como funciona el proceso:

  1. Iniciar el punto de enlace local de Lambda.

    Iniciar el punto de enlace local de Lambda ejecutando el comando siguiente en el directorio que contiene suAWS SAMplantilla:

    sam local start-lambda

    Este comando inicia un endpoint local enhttp://127.0.0.1:3001que emulaAWS Lambda. Puede ejecutar las pruebas automatizadas en este extremo Lambda local. Cuando invoca este endpoint mediante elAWS CLIo SDK, ejecuta localmente la función Lambda especificada en la solicitud y devuelve una respuesta.

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

    En la prueba de integración, puede utilizar elAWSSDK para invocar su función de Lambda con datos de prueba, esperar respuesta y verificar que la respuesta es la que espera. Para ejecutar la prueba de integración localmente, debe configurar elAWSSDK para enviar una llamada a la API de invocación de Lambda para invocar el extremo local de Lambda que inició en el paso anterior.

    A continuación se muestra un ejemplo de Python (elAWSLos SDK para otros idiomas 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=1, 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 utilizar este código para probar las funciones Lambda implementadas configurandorunning_locallyaFalse. Esto configura elAWSSDK al que conectarseAWS Lambdaen laAWSCloud.