[英]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.