本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与自动测试集成
您可以使用sam local invoke
命令通过在本地运行 Lambda 函数来手动测试您的代码。借助 Amazon SAMCLI,在部署到云端之前,您可以先对本地 Lambda 函数运行测试,从而轻松编写自动集成测试。Amazon
该sam local start-lambda
命令启动模拟Amazon Lambda调用端点的本地端点。您可以从自动测试中调用它。由于此端点模拟Amazon Lambda调用终端节点,因此您可以编写一次测试,然后针对本地 Lambda 函数或已部署的 Lambda 函数运行测试(无需任何修改)。您也可以对 CI/CD 管道中已部署的Amazon SAM堆栈运行相同的测试。
以下是该过程的工作原理:
-
启动本地 Lambda 终端节点。
在包含您的Amazon SAM模板的目录中运行以下命令来启动本地 Lambda 终端节点:
sam local start-lambda
此命令启动模拟
http://127.0.0.1:3001
Amazon Lambda的本地端点。您可以针对此本地 Lambda 端点运行自动测试。当您使用Amazon CLI或 SDK 调用此终端节点时,它会在本地执行请求中指定的 Lambda 函数并返回响应。 -
对本地 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