簡體   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