3

有人可以解释一下如何设置dynamodb_mapper(连同boto?)以使用带有 sqlite 后端的 ddbmock 作为Amazon DynamoDB -replacement 来进行功能测试吗?

现在,我已经尝试了“普通”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 所做的那样?感谢您的任何建议。

4

1 回答 1

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 的作者对此进行更新。

于 2013-02-04T17:12:40.400 回答