我正在尝试使用开发应用程序服务器在 Python 中测试 Google App Engine 的新全文搜索功能。
是否有存根search https://developers.google.com/appengine/docs/python/search/这使得人们可以用testbed https://developers.google.com/appengine/docs/python/tools/localunittesting本地单元测试?
下面是抛出异常的示例代码:
#!/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()
is: AssertionError: No api proxy found for service "search"
。是否为搜索编写了 api 代理?
想法和评论表示赞赏。
UPDATE这在 2012 年有效。2013 年情况发生了变化:存根得到正式支持。请参阅@siebz0r 答案。
它不在支持的存根列表 http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/testbed/__init__.py#172(然而,我假设),但是有一个搜索服务存根 http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/search/simple_search_stub.py#686在 simple_search_stub.py 中,它看起来像您所追求的。
我自己没有测试过,但你可以尝试这样做:
testbed = testbed.Testbed()
testbed.activate()
stub = SearchServiceStub()
testbed._register_stub(SEARCH_SERVICE_NAME, stub)
SEARCH_SERVICE_NAME
应该"search"
,并且它也应该出现在 SUPPORTED_SERVICES 列表中,否则测试床将引发异常 http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/testbed/__init__.py#353.
“注入”这个新服务存根的方式是修改 SDK 的 testbed/__init__.py 或从您的代码中执行。不能真正说哪种方法更好,因为无论哪种方式都将是一种黑客行为,直到 init_search_stub() 正式出现在列表中。
另外,它还没有出现在列表中可能是因为它还没有准备好:)所以,使用它需要您自担风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)