与自动测试集成 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

与自动测试集成

您可以使用sam local invoke命令通过在本地运行 Lambda 函数来手动测试您的代码。借助 Amazon SAMCLI,在部署到云端之前,您可以先对本地 Lambda 函数运行测试,从而轻松编写自动集成测试。Amazon

sam local start-lambda命令启动模拟Amazon Lambda调用端点的本地端点。您可以从自动测试中调用它。由于此端点模拟Amazon Lambda调用终端节点,因此您可以编写一次测试,然后针对本地 Lambda 函数或已部署的 Lambda 函数运行测试(无需任何修改)。您也可以对 CI/CD 管道中已部署的Amazon SAM堆栈运行相同的测试。

以下是该过程的工作原理:

  1. 启动本地 Lambda 终端节点。

    在包含您的Amazon SAM模板的目录中运行以下命令来启动本地 Lambda 终端节点:

    sam local start-lambda

    此命令启动模拟http://127.0.0.1:3001Amazon Lambda的本地端点。您可以针对此本地 Lambda 端点运行自动测试。当您使用Amazon CLI或 SDK 调用此终端节点时,它会在本地执行请求中指定的 Lambda 函数并返回响应。

  2. 对本地 Lambda 终端节点运行集成测试。

    在集成测试中,您可以使用Amazon软件开发工具包调用带有测试数据的 Lambda 函数,等待响应,然后验证响应是否符合您的预期。要在本地运行集成测试,您应将Amazon软件开发工具包配置为发送 Lambda Invoke API 调用,以调用您在上一步中启动的本地 Lambda 终端节点。

    以下是 Python 示例(其他语言的Amazon软件开发工具包具有类似的配置):

    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"

    通过将此代码设置running_locally为,您可以使用此代码来测试已部署的 Lambda 函数。False这将设置要在Amazon云端连接的 Amazon SDK。Amazon Lambda