4

開発アプリケーション サーバーを使用して、Google App Engine の新しい全文検索機能を Python でテストしようとしています。

ローカルユニットテスト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 プロキシは作成されていますか?

考えやコメントをお待ちしております。

4

2 に答える 2

10

更新これは 2012 年に有効でした。2013 年に変更されました。スタブは公式にサポートされています。@siebz0rの回答を参照してください。

サポートされているスタブのリストにはありませんが (まだだと思います)、simple_search_stub.py にSearchServiceStubがあります。

私は自分でテストしていませんが、次のようなことを試すことができます:

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

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

SEARCH_SERVICE_NAMEである必要があり"search"、SUPPORTED_SERVICES リストにも存在する必要があります。そうでない場合、testbed は例外を発生させます

この新しいサービス スタブを「注入」する方法は、SDK の testbed/__init__.py を変更するか、コードから実行します。init_search_stub() が正式にリストに表示されるまで、どちらの方法でもハックになるため、どちらのアプローチが優れているとは言えません。

また、まだリストにないという事実は、おそらく準備ができていないためです:)したがって、自己責任で使用してください。

于 2012-06-03T17:27:55.833 に答える