如何在dynamodb-mapper中使用ddbmock?

时间:2013-01-31 01:49:22

标签: python testing mocking boto amazon-dynamodb

有人可以解释如何设置dynamodb_mapper(与boto一起使用?)将ddbmock与sqlite后端一起用作Amazon DynamoDB - 替换功能测试目的吗?< / p>

现在,我已经尝试了“普通”boto并设法通过在本地启动ddbmock服务器并使用boto连接ddbmock(使用sqlite):

db = connect_boto_network(host='127.0.0.1', port=6543)

..然后我使用db对象对数据库进行所有操作。但是,dynamodb_mapper使用这种方式获取数据库连接:

conn = ConnectionBorg()

据我所知,它使用boto的默认方式连接(真正的)DynamoDB。所以基本上我想知道是否有一种(首选的?)方式让ConnectionBorg()与我的本地ddbmock服务器连接,就像我上面用boto一样?感谢您的任何建议。

1 个答案:

答案 0 :(得分:3)

图书馆模式

在库模式而不是服务器模式下:

import boto
from ddbmock import config
from ddbmock import connect_boto_patch

# switch to sqlite backend
config.STORAGE_ENGINE_NAME = 'sqlite'
# define the database path. defaults to 'dynamo.db'
config.STORAGE_SQLITE_FILE = '/tmp/my_database.sqlite'

# Wire-up boto and ddbmock together
db = connect_boto_patch()

通过boto对dynamodb服务的任何访问都将使用ddbmock。

服务器模式

如果您仍然希望我们在服务器模式下使用ddbmock,我会尝试在测试设置代码的真正开头更改ConnectionBorg._shared_state['_region']

ConnectionBorg._shared_state['_region'] = RegionInfo(name='ddbmock', endpoint="localhost:6543")

据我了解,在这些行之后通过任何ConnectionBorg实例访问dynamodb将使用ddbmock入口点。

这就是说,我从未测试过它。我将确保ddbmock的作者对此进行更新。