Google Cloud Language API을 사용하는 Google App Engine 프로젝트가 있고 API 호출을 위해 Google API 클라이언트 라이브러리 (Python)를 사용하고 있습니다.단위 테스트 용 Google API 호출 캐싱
단위 테스트를 실행할 때 API에 대한 호출이 많습니다. 이렇게하면 테스트 속도가 느려지고 비용이 발생합니다.
테스트 속도를 높이고 API 청구를 피하기 위해 Google API 호출을 캐시하고 싶습니다. 다른 솔루션을 사용할 수 있다면 내 자신을 롤업하지 않을 것입니다.
내가이 일을 제안이 Google API page 발견 :import httplib2
http = httplib2.Http(cache=".cache")
그리고 내 코드에 다음 줄을 추가 한을 (이 GAE의 memcache에를 사용하는 또 다른 방법입니다하지만 테스트 코드 호출 사이에 지속되지 않습니다)와, 내 API 호출 연결을 만들 바로 다음 줄 뒤에 : 캐싱이 작동하지 않으며 위의 솔루션은 너무 단순 같다
NLP = discovery.build("language", "v1", API_KEY)
그래서 나는 뭔가를 놓치고 생각합니다.
UPDATE :
앱 엔진 사용 (단지 일반 단위 테스트) 및되지 않는다는 것을 나는 또한 내가이 같은 구글의 API 클라이언트에 생성 된http
를 통과 할 수 있다고 생각, 그래서 내 테스트를 업데이트
:
NLP = discovery.build("language", "v1", http, API_KEY)
은 이제, 예를 들어,이 호출이 캐시되지, 초기 발견 호출은 캐시되지만 실제 API 호출은 캐시되지 않습니다 :
result = NLP.documents().annotateText(body=data).execute()
로컬 시스템에서 테스트 중이므로 파일 시스템 버전이 작동 할 것으로 생각했습니다. memcache 버전을 시도했지만 memcache가 유닛 테스트 호출간에 유지되지 않기 때문에 작동하지 않습니다. –
단일 실행 후 .cache 디렉토리에 아무 것도 없습니까? – jjjjoe
아니, 단위 테스트도 디스크에 쓸 수 없도록 배포 된 앱과 비슷한 방법으로 샌드 박스 처리되는 것 같습니다. 한 가지 해결책은 GAE 기능을 필요로하는 단위 테스트와 그렇지 않은 단위 테스트를 분리하는 것입니다. –