gpt4 book ai didi

amazon-web-services - 单元测试AWS : step function

转载 作者:行者123 更新时间:2023-12-03 14:35:25 26 4
gpt4 key购买 nike

我是AWS的初学者,并且已经创建了下面给出的第一个AWS步骤功能,现在下一步是对该步骤功能进行单元测试。我现在卡住并且不知道如何独立执行lambda函数的单元测试,我该如何继续进行阶跃函数的单元测试。

我脑海中也有一个问题,值得对阶跃函数进行单元测试,因为它只是一个json,所以有时会感觉是否可以完成。

我尝试搜索,但是互联网或AWS文档上没有任何线索
任何帮助将不胜感激关于此博客或任何示例用例的任何博客
谢谢

{
"Comment": "An example of the Amazon States Language using a choice state.",
"StartAt": "LoginState",
States": {
"LoginState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:170344690019:function:myfirstLogin",
"Next": "ChoiceState"
},
"ChoiceState": {
"Type" : "Choice",
"Choices": [
{
"Variable": "$.success",
"BooleanEquals": true,
"Next": "logoutState"
},
{
"Variable": "$.success",
"BooleanEquals": false,
"Next": "DefaultState"
}
],
"Default": "DefaultState"
},

"logoutState": {
"Type" : "Task",
"Resource": "arn:aws:lambda:us-east-1:170344690019:function:myFirstLogout",
"End": true
},


"DefaultState": {
"Type": "Fail",
"Error": "DefaultStateError",
"Cause": "No Matches!"
}

}
}

最佳答案

这有点挑剔,但是它将为以下解释提供帮助。在测试状态机时,您正在从单元测试的范围扩展到集成测试。

那么为什么要挑剔呢?由于您正在进行集成测试,因此您将需要具有运行状态机的能力,以便可以将其输入并验证输出。您可以通过以下两种方式自动测试状态机...

  • 将状态机部署到AWS账户中的测试环境中,并使用AWS提供的任何工具(cliboto3等)直接调用它。这更接近自动化测试,因为它可以在真实环境中测试状态机。如果将其设置为CI管道的一部分,则将要求您使用您的AWS账户中安装和执行状态机所需的访问权限来配置构建服务器。
  • 尝试使用stepfunctions-local之类的东西来模拟本地系统或测试环境中的运行状态机。如果您的CI管道设置已经在运行现有的单元测试,则此选项可能很有用。这将需要一些努力才能将工具正确安装到您的CI环境中,但这可能是值得的。
  • 我个人最喜欢的...使用localstack。这些家伙在模拟可以在Docker容器中启动并运行的多个AWS服务方面做得非常出色。如果您的lambda使用其他AWS服务,则此功能特别有用。我喜欢在CI环境中运行它以进行集成测试。
  • 使用AWS SAM CLI。我本人并没有使用太多。它要求您使用无服务器应用程序模型。自从得到正式支持以来,他们的文档确实得到了改善,因此遵循他们的指南和大量示例应该非常容易使用。在CI环境中运行此程序将需要在测试环境中安装该工具。

  • 我希望这有帮助。我认为共享此答案中的任何代码都无济于事,因为您要尝试执行的操作并非无关紧要,并且可以通过多种方式实现。例如,CircleCI之类的CI服务利用Docker容器,使您可以选择生成自己的Docker容器以运行stepfunctions-local或localstack。

    编辑

    请参阅下面@niqui中的 the answer。我相信我肯定会赞成此选项在CI环境中进行测试,因为它是由AWS提供并维护的,因此它可以作为stepfunctions-local或localstack的替代方案。

    关于amazon-web-services - 单元测试AWS : step function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51095883/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com