2014-12-08 3 views
1

파이썬 모듈 Beaker 또는 Dogpile을 캐싱에 사용하면 특정 키 값을 가진 영역이 이미 캐시에 있는지 여부를 테스트 할 수 있습니까? 함수/영역이 Beaker/Dogpile에 캐시되어 있는지 테스트하십시오.

@cache_region('foo_term') 
def cached_method(bar): 
    return actual_method(bar) 

그런 다음 테스트에서 당신이 밖으로 method_to_test 패치와이 호출되지 /라고 주장 할 수 있습니다 :

답변

0

의 당신이 비커에 캐시 된 방법이 있다고 가정 해 봅시다

def test_cache(): 
    with patch('package.module.actual_method') as m: 
     cached_method(foo) 
     assert m.call_args_list = [call(foo)] # Asserting it is not cached the first time 

     cached_method(foo) 
     assert m.call_args_list = [call(foo)] # Now asserting it is cached 

     cached_method(bar) 
     assert m.call_args_list = [call(foo), call(bar)] # asserting `bar' is not cached 

주 당신 함수의 '캐시 된'버전으로 캐시하려는 메서드를 래핑하고 캐시 된 버전에 비커 캐시 데코레이터를 넣어야합니다. 물론 patch을 만드는 방법을 찾지 않는 한 this black magic과 작동해야합니다.