SyntaxHighlighter

2012年7月29日日曜日

GAE Python urlfetchサービスを用いたテストについて


今回は、GAEでアプリケーションを開発する際のTipsを紹介。

・目的

GAE Pythonでurlfetchサービスを用いて通信で外部のコンテンツを取得する
処理のテストを行う場合、
外部への接続が切断されている、または外部のデータが変更された等で
テストが失敗するという事態が起こる事を避ける為、
実際の通信はせずにローカルのコンテンツ(ファイルなど)を使用してレスポンス
する。

・方法

GAEでは各種サービスをRPC経由で呼び出している。
開発環境では、RPCをフックしているstubを使用して実際の通信を行う処理を
行っている。
今回はそのstubの実装を変更し、レスポンスを独自に組み立てて返却する。

下記がコード


テストで使い回しが効くようにベースクラスとして作成した。
まず、apiproxy_stub_mapに各種サービスの独自に実装したstubを設定する。
今回はurlfetchなので、サービス名は"urlfetch"とする。
設定したstubクラスには_Dynamic_Fetchというメソッドが実装されているが、
RPCが実行されると使われるAPIProxyStub#MakeSyncCallで動的呼び出しが
行われているメソッドである。
このメソッドをオーバーライドし、独自のレスポンスを組みたてて返却する。
このようにモックを使用したテストを行いたい場合は、どのサービスでも
応用が効くはず。お試しあれ。

0 件のコメント:

コメントを投稿