, I는 내 캐시를 지정 requests.get ('aurl')을 모방 할 수있어서 외부 요청이 없는지 확인합니다.파이썬 장고 모의 캐시 내 settings.py에서
그러나 테스트 코드는 여전히 캐시에 도달하고 그로부터/sets를 가져옵니다. 따라서 내 제품이 이미 캐시를 설정 한 경우 동일한 캐시에서 데이터를 가져 오기 때문에 테스트가 실패합니다. 또는 먼저 테스트를 실행하면 테스트 케이스가 테스트 데이터로 캐시를 설정하고 있는데 이는 생산성 웹 사이트를 실행할 때 반영됩니다.
어떻게 (? None을 반환) 이렇게 설정 호출이 실제 캐시를 설정하지 않는
get_cache('default').set('key', result)
및
get_cache('default').get('key')
에 대한 호출을 조롱하고 실제 아무것도 반환하지 않습니다 얻을 수 있습니다 은닉처.
이 작업을 수행하는 방법에 대한 코드 샘플을 제공해주십시오. 여기
내가 작동하도록이 후 넣을 수 있습니다 어떤 코드 내 requests.get
def test_get_aview(self):
with mock.patch('requests.get') as mymock:
mymock.side_effect = (lambda url: MOCKED_DATA[url])
을 조롱 한 방법이다? 나는
class MockCacheValue(mock.MagicMock):
def get(self, key):
print 'here'
return None
def set(self, key, value):
print 'here 2'
pass
def test_get_aview(self):
with mock.patch('requests.get') as mymock:
mymock.side_effect = (lambda url: MOCKED_DATA[url])
mock.patch('django.core.cache.get_cache', new=MockCacheValue)
뭔가를 시도했지만 작동하고 나에게 그 난 당신이 dummy cache 동안 사용한다고 생각
프로덕션 컴퓨터에서 테스트를 실행하는 이유는 무엇입니까? –
@kashif를 실행하는 동안 [dummy cache] (https://docs.djangoproject.com/en/dev/topics/cache/?from=olddocs/#dummy-caching-for-development)를 사용하는 것이 어떻습니까? 테스트? – alecxe
@Alexander, 내 실제 코드에서 위에 사용하는 캐시는 https://docs.djangoproject.com/en/dev/topics/cache/?from=olddocs/#filesystem-caching 파일 시스템입니다. 테스트 케이스를 실행하는 동안 '기본'캐시에 'BACKEND'에 대한 다른 값을 지정하고 어떻게하면 뷰포트의 실제 코드가 파일 시스템에 액세스하는지 확인할 수 있습니까? – kk1957