如何模拟 AWS DynamoDB 服务?

How to mock AWS DynamoDB service?(如何模拟 AWS DynamoDB 服务?)

本文介绍了如何模拟 AWS DynamoDB 服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的服务使用 AWS DynamoDB 作为依赖项.我想编写单元测试,但我不知道如何模拟 DynamoDB 服务.有人可以帮我吗?

My service uses AWS DynamoDB as dependency. I want to write unit tests, but I don't know how to mock the DynamoDB service. Could anybody help me with that?

推荐答案

可以使用moto python库来模拟aws dynamodb,

You can use moto python library to mock aws dynamodb,

https://github.com/spulec/moto

moto 使用基于 python 装饰器的简单系统来描述 AWS 服务.这是一个例子:

moto uses a simple system based upon python decorators, describing the AWS services. Here is an example:

import unittest
import boto3
from moto import mock_dynamodb2

class TestDynamo(unittest.TestCase):

    def setUp(self):
        pass

    @mock_dynamodb2
    def test_recoverBsaleAssociation(self):
        table_name = 'test'
        dynamodb = boto3.resource('dynamodb', 'us-east-1')

        table = dynamodb.create_table(
            TableName=table_name,
            KeySchema=[
                {
                    'AttributeName': 'key',
                    'KeyType': 'HASH'
                },
            ],
            AttributeDefinitions=[
                {
                    'AttributeName': 'key',
                    'AttributeType': 'S'
                },

            ],
            ProvisionedThroughput={
                'ReadCapacityUnits': 5,
                'WriteCapacityUnits': 5
            }
        )

        item = {}
        item['key'] = 'value'

        table.put_item(Item=item)

        table = dynamodb.Table(table_name)
        response = table.get_item(
            Key={
                'key': 'value'
            }
        )
        if 'Item' in response:
            item = response['Item']

        self.assertTrue("key" in item)
        self.assertEquals(item["key"], "value")

这篇关于如何模拟 AWS DynamoDB 服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何模拟 AWS DynamoDB 服务?

基础教程推荐