Google Cloud Language APIを使用するGoogle App Engineプロジェクトがあり、Google APIクライアントライブラリ(Python)を使用してAPI呼び出しを行っています。単体テスト用Google API呼び出しのキャッシング
ユニットテストを実行しているときに、私はAPIをかなり呼び出しています。これは私のテストを遅らせ、またコストもかかります。
私はテストをスピードアップし、API料金を避けるためにGoogle APIへの呼び出しをキャッシュしたいと思います。
私はこれを行うことを示唆している。このGoogle API page、見つかった:(そこGAEのmemcacheのを使用するための別のオプションがあるが、テストコードの呼び出しの間で永続化されることはありません
import httplib2
http = httplib2.Http(cache=".cache")
をそして私は私のコードにこれらの行を追加しました)、右これらの行の後に、私は私のAPIコール接続の作成:
NLP = discovery.build("language", "v1", API_KEY)
キャッシングが動作していないし、上記溶液は、私は、私は何かが欠けてい疑うあまりにも簡単なようですが。
UPDATE:
のApp Engineを使用しないように、私は私のテストを更新しました(普通のユニットテスト)と私はまた、私はこのような、GoogleのAPIクライアントに私が作成したhttp
を渡すことができることを考え出し:
NLP = discovery.build("language", "v1", http, API_KEY)
さて、最初の発見コールがキャッシュされているが、実際のAPIコールは、例えばキャッシュされません、この呼び出しがキャッシュされていない:
result = NLP.documents().annotateText(body=data).execute()
ローカルマシンでテストしているので、ファイルシステムのバージョンが機能すると思っていました。私はmemcacheのバージョンを試しましたが、私の単体テストの呼び出しの間にmemcacheが保持されていないので、どちらも動作しません。 –
一度実行すると.cacheディレクトリに何かがありますか? – jjjjoe
いいえ、単体テストでも展開されたアプリケーションと同様にサンドボックス化されているので、単体テストでもディスクに書き込むことはできません。 1つの解決策は、GAE機能を必要とする単体テストとそうでない単体テストを分離することです。 –