python - AWS Lambda 上的单元测试

标签 python unit-testing amazon-web-services aws-lambda

我有一个在 AWS 上运行的 Python 脚本。该脚本包含由 AWS 调用的 lambda_handler(event, context) 函数。现在,我想创建一个新的 lambda 函数作为单元测试。 典型的单元测试架构定义为:

import unittest

def my_function(a):
    return a + 1

class Test(unittest.TestCase):

    def test_correct(self):
        self.assertEqual( my_function(1), 2)

if __name__ == '__main__':
    unittest.main()

在 AWS 中,lambda_handler(event, context) 函数被调用。如何让 unittest_lambda_handler(event, context) 执行单元测试?

所以我猜我的代码(在单元测试脚本中)应该是这样的:

import main_lambda_function
import unittest

    def unittest_lambda_handler(event, context):
         #what should this function do?

    class MyTest(unittest.TestCase):
         def return_type(self,event, context):
            self.assertTrue(isinstance(main_lambda_function.lambda_handler(event, context),int))

这是正确的方法吗?如果是这样,unittest_lambda_handler 应该做什么?

最佳答案

不确定有多少人知道在大多数情况下您甚至不需要第 3 部分库来 stub boto3 调用。 Botocore 提供开箱即用的 stubber Reference

此类将允许您对请求进行 stub ,这样您就不必点击端点来编写测试。响应以先入先出的方式返回。如果操作被乱序调用,或者在没有剩余排队响应的情况下被调用,则会引发错误。

关于python - AWS Lambda 上的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287018/

相关文章:

amazon-web-services - 如何将 CloudFormation 输出传递到 CodeBuild 阶段?

json - WebServerInstance 遇到不支持的属性 VpcId

python - 如何在 python igraph 中保留图中的顶点标签

python - import ... as ... 似乎失败, 'module' 没有属性

python - Twisted 中插件和应用程序插件的区别?

unit-testing - VS 2017未在.NET Core上发现测试

c# - Rhino Mocks - 通过多次调用模拟其返回值发生变化(即使传递相同参数)的方法

Python:如何编写看起来不错并且可以与 argparse 或 optparse 一起使用的代码?

eclipse - 如何使用 eclipse-plugin 打包将 Mockito 添加到 Tycho 单元测试中的测试类路径

amazon-web-services - 如何处理重叠的后缀,s3 事件通知的前缀