Automatisez les tests d'intégration locaux avec AWS SAM - AWS Serverless Application Model

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Automatisez les tests d'intégration locaux avec AWS SAM

Bien que vous puissiez l'utiliser Présentation des tests avec sam local invoke pour tester le code manuellement, il vous permet AWS SAM également de tester votre code à l'aide de tests d'intégration automatisés. Les tests d'intégration vous aident à détecter les problèmes au début du cycle de développement, à améliorer la qualité de votre code et à gagner du temps tout en réduisant les coûts.

Pour créer des tests d'intégration automatisés dans AWS SAM, vous devez d'abord exécuter des tests sur des fonctions Lambda locales avant de les déployer dans le AWS Cloud. La Présentation des tests avec sam local start-lambda commande démarre un point de terminaison local qui émule le point de terminaison d'appel Lambda. Vous pouvez l'appeler à partir de vos tests automatisés. Comme ce point de terminaison émule le point de terminaison Lambda Invoke, vous pouvez écrire des tests une seule fois, puis les exécuter (sans aucune modification) sur la fonction Lambda locale ou sur une fonction Lambda déployée. Vous pouvez également exécuter les mêmes tests sur une pile AWS SAM déployée dans votre pipeline CI/CD.

Voici comment fonctionne le processus :

  1. Démarrez le point de terminaison Lambda local.

    Démarrez le point de terminaison Lambda local en exécutant la commande suivante dans le répertoire contenant votre AWS SAM modèle :

    sam local start-lambda

    Cette commande démarre un point de terminaison local sur http://127.0.0.1:3001 qui émule AWS Lambda. Vous pouvez exécuter des tests automatisés par rapport à ce point de terminaison Lambda local. Lorsque vous appelez ce point de terminaison à l'aide du SDK AWS CLI ou, il exécute localement la fonction Lambda spécifiée dans la demande et renvoie une réponse.

  2. Exécutez un test d'intégration sur le point de terminaison Lambda local.

    Lors de votre test d'intégration, vous pouvez utiliser le AWS SDK pour appeler votre fonction Lambda avec les données de test, attendre une réponse et vérifier que la réponse est conforme à vos attentes. Pour exécuter le test d'intégration en local, vous devez configurer le SDK AWS pour envoyer l'appel d'API de Lambda au point de terminaison Lambda local démarré à l'étape précédente.

    Voici un exemple en Python (les AWS SDK des autres langages ont des configurations similaires) :

    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"

    Vous pouvez utiliser ce code pour tester les fonctions Lambda déployées en définissant running_locally sur False. Cela permet de configurer le AWS SDK auquel se connecter AWS Lambda dans le AWS cloud.