繁体   English   中英

在 python 中为 DynamoDB 和表使用 Mock

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

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