测试平台存根谷歌应用程序引擎“搜索”(Testbed stub for Google App Eng

2019-09-17 17:13发布

我试图在用Python开发应用程序服务器测试谷歌App Engine的新的全文搜索功能。

有没有为存根search ,允许一个与测试testbed本地单元测试?

以下是抛出异常示例代码:

#!/usr/bin/python
from google.appengine.ext import testbed

from google.appengine.api import search

def foo():
    d = search.Document(doc_id='X',
        fields=[search.TextField(name='abc', value='123')])
    s = search.Index(name='one').add(d)

tb = testbed.Testbed()
tb.activate()
# tb.init_search_stub() ## does this exist?

foo()

通过抛出的异常foo()是: AssertionError: No api proxy found for service "search" 。 有一个API代理被用于搜索写的?

想法和意见赞赏。

Answer 1:

看来,因为SDK 1.8.4搜索存根可以从测试平台启用:

from google.appengine.api import search
from google.appengine.ext import testbed

try:
    tb = testbed.Testbed()
    tb.activate()
    tb.init_search_stub()
    index = search.Index(name='test')
    index.put(search.Document())
finally:
    tb.deactivate()


Answer 2:

UPDATE,这是在2012年的事情在2013年发生变化有效:存根的正式支持。 见@ siebz0r答案。

这不是在支持存根的列表 (然而,我认为),但有一个SearchServiceStub在simple_search_stub.py看起来像你以后。

我没有测试过自己,但你可以尝试做这样的事情:

testbed = testbed.Testbed()
testbed.activate()

stub = SearchServiceStub()
testbed._register_stub(SEARCH_SERVICE_NAME, stub)

SEARCH_SERVICE_NAME应该是"search" ,它也应该出现在名单SUPPORTED_SERVICES, 否则测试床将引发异常 。

你“注入”的方式这项新服务存根是要么修改SDK的试验台/ __ init__.py或从你的代码做到这一点。 不能说哪种方法更好,因为它会是在任一方式的黑客,“直到init_search_stub()将正式出现在列表中。

而且,事实上,它是不在列表中还可能是因为它只是没有准备好:)所以,用它在你自己的风险。



文章来源: Testbed stub for Google App Engine 'search'