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

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

与自动化测试集成

可以使用sam local invoke命令通过在本地运行 Lambda 函数来手动测试代码。随着Amazon SAMCLI 中,您可以通过首先对本地 Lambda 函数运行测试来轻松编写自动化集成测试,然后再部署到Amazon云。

这些区域有:sam local start-lambda命令启动一个本地端点,该端点模拟Amazon Lambda调用终端节点。您可以从自动测试中调用它。因为此端点模拟Amazon Lambda调用终端节点,您可以编写测试一次,然后针对本地 Lambda 函数或部署的 Lambda 函数运行测试(无需做任何修改)。您还可以针对部署的Amazon SAM堆栈中的 CI/CD 管道。

以下是具体工作原理:

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

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

    sam local start-lambda

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

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

    在集成测试中,您可以使用AmazonSDK 通过测试数据调用 Lambda 函数,等待响应并验证响应符合您的预期。要在本地运行集成测试,应配置AmazonSDK 发送 Lambda 调用 API 调用以调用您在上一步中启动的本地 Lambda 终端节点。

    下面是一个 Python 示例(Amazon适用于其他语言的 SDK 具有相似的配置):

    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"

    您可以使用此代码来测试部署的 Lambda 函数,方法是设置running_locallyFalse。以下设置:Amazon要连接到的软件开发工具包Amazon Lambda中的Amazon云。