[英]Using Mock in python for DynamoDB and Table
我想测试我的 python function 的工作是从 dynamoDB 表中提取所有数据
import boto3
import json
import constant as const
def connection():
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('file')
response = table.scan()['Items']
return response
我正在使用单元测试测试我的上述代码。 我写的代码如下
import unittest
from unittest import mock
import retrive
import constant
import boto3
class Test(unittest.TestCase):
@mock.patch('boto3.resource')
@mock.patch('boto3.resource.Table')
@mock.patch('table.scan')
def test_fetch_db_data(self, mock_boto3,mock_dynamo,mock_table):
mock_boto3.return_value()
mock_dynamo.return_value()
mock_table = {'Items':'key'}
result = retrive.connection()
self.assertEqual('key', result)
但这给了我一个错误,即 ModuleNotFoundError: No module named 'table'
看看这个答案: 如何模拟 AWS DynamoDB 服务? .
也可以做你尝试做的事情,但它看起来像:
@mock.patch('botocore.client.BaseClient._make_api_call', new=mock_function)
这是一种比moto
更复杂的做事方式,因为您需要定义mock_function
来生成模拟客户端响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.