2012-07-24 47 views
0

我刚刚通过我的功能测试没有使用我的dev_appserver相同的设置。我目前使用require_indexes运行我的dev_appserver(非rel)。谷歌应用程序引擎要求测试索引

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

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

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. 

但在查询服务器上执行我得到的

NeedIndexError: This query requires a composite index that is not defined. You must update the index.yaml file in your application root. The following index is the minimum index required:

+0

这听起来像你有你的功能测试仪器dev_appserver代码直接设置你的测试环境。是这样吗?如果是这样,是否有一个原因,你不能使用ext.testbed? (我不确定如何根据索引配置获得测试床以引发NeedIndexError,虽然它可以配置为使用特定的数据存储数据文件,所以也许它可以在给定的情况下工作...)另外,通过“objects()”你的意思是ext.db的“all()”方法,还是这是一个不同的数据仓库API? – 2012-07-24 01:33:55

+0

不确定关注?我只是ext测试,但它不需要索引。 – Nix 2012-07-24 01:34:38

+0

所以你使用'ext.testbed',但它会在每个查询中引发'NeedIndexError'?你可以发布一些你的测试设置代码吗? – 2012-07-24 01:37:42

回答

2

尝试增加{ “require_indexes”:真正}作为关键字参数init_datastore_v3_stub()

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

+0

您的建议可行,但需要注意的是您必须设置root_path,否则您将没有定义索引。 – Nix 2012-07-24 16:42:41