【发布时间】:2018-04-27 14:34:19
【问题描述】:
我有一个使用 Google Cloud Language API 的 Google App Engine 项目,并且我正在使用 Google API 客户端库 (Python) 进行 API 调用。
在运行单元测试时,我会多次调用 API。这会减慢我的测试速度并产生成本。
我想缓存对 Google API 的调用以加快我的测试并避免 API 费用,如果有其他解决方案可用,我宁愿不自己动手。
我发现了这个Google API page,建议这样做:
import httplib2
http = httplib2.Http(cache=".cache")
我已将这些行添加到我的代码中(还有另一个选项可以使用 GAE 内存缓存,但不会在测试代码调用之间持久化)并且在这些行之后,我创建了我的 API 调用连接:
NLP = discovery.build("language", "v1", API_KEY)
缓存不起作用,上面的解决方案似乎太简单了,所以我怀疑我遗漏了一些东西。
更新:
我更新了我的测试,以便不使用 App Engine(只是一个常规的单元测试),我还发现我可以像这样将我创建的 http 传递给 Google API 客户端:
NLP = discovery.build("language", "v1", http, API_KEY)
现在,最初的发现调用被缓存,但实际的 API 调用没有被缓存,例如,这个调用没有被缓存:
result = NLP.documents().annotateText(body=data).execute()
【问题讨论】:
标签: python unit-testing google-app-engine google-api httplib2