10

我正在使用 Google App Engine 框架使用 Python 2.7 构建应用程序。为了测试我的应用程序,我有几个测试通过使用 nosegae 插件的nosetests 运行。我使用以下命令运行它们:

nosetests --with-gae --gae-lib-root=/usr/local/google_appengine/ -w . -w */test/ -v

在我的应用程序的模型层中,我需要运行多个数据库操作,这些操作会影响同一事务中的多个实体组。我通过使用 db 包的 run_in_transaction_options 函数来做到这一点: https ://developers.google.com/appengine/docs/python/datastore/functions#run_in_transaction

不幸的是,在运行我的测试套件时,我在那些尝试运行此类事务的测试用例中收到以下错误:

BadRequestError:多个实体组上的事务仅允许使用 High Replication 数据存储

我在鼻子测试中找不到任何可以启用 HRD 的标志。

我想知道是否可以从鼻子测试中运行 HRD,如果可以,如何设置?

4

1 回答 1

16

我强烈建议您从db切换到ndb,您可以在其中使用跨组事务

要模拟 HRD,您可以将此部分添加到setUp测试的功能中,来自编写高复制数据存储测试

# Create a consistency policy that will simulate the High Replication consistency model.
self.policy = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0)

# Initialize the datastore stub with this policy.
self.testbed.init_datastore_v3_stub(consistency_policy=self.policy)
于 2012-10-02T18:43:41.120 回答