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