简体   繁体   English

如何模拟 AWS DynamoDB 服务?

[英]How to mock AWS DynamoDB service?

My service uses AWS DynamoDB as dependency.我的服务使用 AWS DynamoDB 作为依赖项。 I want to write unit tests, but I don't know how to mock the DynamoDB service.我想编写单元测试,但我不知道如何模拟 DynamoDB 服务。 Could anybody help me with that?有人可以帮我吗?

You can use moto python library to mock aws dynamodb,您可以使用 moto python 库来模拟 aws dynamodb,

https://github.com/spulec/moto https://github.com/splec/moto

moto uses a simple system based upon python decorators, describing the AWS services. moto 使用一个基于 python 装饰器的简单系统来描述 AWS 服务。 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")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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