Python 谷歌应用引擎需要索引进行测试

Python 谷歌应用引擎需要索引进行测试,python,google-app-engine,testing,Python,Google App Engine,Testing,我的功能测试没有使用与我的dev_appserver相同的设置,这让我很恼火。我目前使用require_索引运行我的dev_appserver(非rel) 如何强制我的测试台使用相同的设置 我曾尝试使用setupindex,但它不“要求”在我的index.yaml中定义它们。我没有正确的设置,因此我可以进行任何查询 i、 e 但是当查询在服务器上执行时,我得到 NeedIndexError:此查询需要未定义的复合索引。必须更新应用程序根目录中的index.yaml文件。 以下索引是所需的最低索引

我的功能测试没有使用与我的dev_appserver相同的设置,这让我很恼火。我目前使用require_索引运行我的dev_appserver(非rel)

如何强制我的测试台使用相同的设置

我曾尝试使用
setupindex
,但它不“要求”在我的index.yaml中定义它们。我没有正确的设置,因此我可以进行任何查询

i、 e

但是当查询在服务器上执行时,我得到

NeedIndexError:此查询需要未定义的复合索引。必须更新应用程序根目录中的index.yaml文件。 以下索引是所需的最低索引:

尝试将{“require_index”:True}作为关键字参数添加到init_datastore_v3_stub()中


您可以查看(并逐步查看)SDK代码,以了解该参数最终是如何传递到数据存储存根的。

听起来您的功能测试直接插入dev_appserver代码来设置测试环境。是这样吗?如果是这样,您有没有理由不能使用ext.testbed?(我不知道如何立即让testbed基于索引配置来引发NeedIndexer,尽管它可以配置为使用特定的数据存储数据文件,所以它可能会在这样的情况下工作…)此外,通过“objects()”你是指ext.db的“all()”方法,还是这是一个不同的数据存储API?我不确定是否遵循?我只使用了ext testbed,但它不需要索引。所以您使用的是
ext.testbed
,但它在每个查询上都提高了
needIndexer
?您可以发布一些测试设置代码吗?问题是我的测试代码没有抛出任何NeedIndex错误,只有应用程序服务器有。您的建议有效,但需要注意的是,您还必须设置根路径,否则将无法定义索引。
clz.testbed = Testbed()
clz.testbed.activate()
clz.testbed.init_memcache_stub()
clz.testbed.init_taskqueue_stub()
clz.testbed.init_urlfetch_stub()
clz.testbed.init_datastore_v3_stub(use_sqlite=True, datastore_file=somepath)
SetupIndexes('','')

model.objects().filter(x=1, y=2.....) #will work regardless of index defined.