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

wswtfjt7  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(144)

我有使用boto3.client()连接到dynamoDB的lambdas。
我试着这样测试

@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

然而,模拟客户端调用计数是1,而不是放置项目调用计数。
我的联络人是这样的:

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

         response = dynamodb.put_item(// same attributed)

有什么建议,如何测试,如果正确的项目得到了放在数据库中,而不使用摩托车?

y53ybaqx

y53ybaqx1#

我相信你已经很接近了,只是有个小问题。
当你的mock boto3.client被调用时,它返回另一个mock,你想要评估 * 那个 * mock call_count。通过访问原始mock的return_value,你就可以访问创建的magic mock。

@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()

相关问题