Redis настроен следующим образом в настройках django:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
CACHE_TTL = 3600
У меня есть следующий вид, который использует кеш Redis:
from django.core.cache import cache
class TestView(APIView):
def post(self, request):
serializer = TestSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
data = serializer.data
# save new data to cache
cache.set(data['title'], data, timeout=CACHE_TTL)
return Response(data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
и у меня есть этот тест, который использует представление выше и использует кеш:
class MyTest(APITestCase):
@patch('redis.StrictRedis', mock_strict_redis_client)
def test_create(self):
url = reverse('test-list')
data = {'title': '77test'}
response = self.client.post(url, data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(IP.objects.count(), 1)
self.assertEqual(IP.objects.get().title, '77test')
Проблема в том, что он использует настоящий кеш Redis вместо фиктивного. Я просматриваю http://niwinz.github.io/django-redis/latest/#_testing_with_django_redis и https://github.com/locationlabs/mockredis и может не понимаю, что я делаю не так.