繁体   English   中英

在 python 中调用 dynamodb 的单元测试 lambda

[英]Unit testing lambdas which call dynamodb in python

我有使用boto3.client()连接到 dynamoDB 的 lambda。

我试着这样测试

    @mock.patch("boto3.client")
    def test(self, mock_client, test):

        handler(event, context)

        print(mock_client.call_count) # 1
        print(mock_client.put_item.call_count) # 0

但是,mock_client.call_count 是 1,但 put_item_call_count 不是。

我的处理程序如下所示:

def handler(event, context):
      dynamodb = boto3.client('dynamodb')

         response = dynamodb.put_item(// same attributed) 

任何建议,如何在不使用 moto 的情况下测试是否将正确的项目放入数据库?

我相信你非常接近,只有一个小问题。

当您的模拟 boto3.client 被调用时,它会返回另一个模拟并且您想评估模拟call_count 通过访问原始模拟的return_value ,您可以访问创建的魔术模拟。

    @mock.patch("boto3.client")
    def test(self, mock_client, test):

        handler(event, context)

        print(mock_client.call_count)

        # .return_value refers to the magic mock that's
        # created when boto3.client is called
        print(mock_client.return_value.put_item.call_count) 

您当前正在评估的是boto3.client.put_item的调用计数,而不是boto3.client("dynamodb").put_item()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM