通过nosetests运行具有多个实体组的事务时出错

Jor*_*cón 10 python google-app-engine nose

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

nosetests --with-gae --gae-lib-root=/usr/local/google_appengine/ -w . -w */test/ -v
Run Code Online (Sandbox Code Playgroud)

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

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

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

我无法在nosetests中找到任何可以启用HRD的标志.

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

asc*_*d00 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)
Run Code Online (Sandbox Code Playgroud)