Fakeredis, подражание функции кэша django в тестах DRF
Я использую fakeredis для издевательства над моими тестами Django
settings.py
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6382",
"TIMEOUT": env.int("CACHE_TIMEOUT", default=2 * 60 * 60),
"OPTIONS": {
"CONNECTION_POOL_KWARGS": {"connection_class": FakeConnection},
},
}
}
В представлениях я использую из django.core.cache import cache
views.py
class MyViewSet(GenericViewSet):
@action(methods=["GET"], detail=False)
def my_view(self, request):
if my_data := cache.get("my_key"):
# some logic
else:
# some logic with calculation
cache.set("my_key", my_data)
return Response(my_data)
Теперь в тестах DRF я хочу проверить, что кэш установлен и при следующем вызове этой конечной точки значение получено из кэша и никаких вычислений не производится
tests.py
class MyTestCase(APITestCase):
def test_my_view(self):
response = self.client.get(reverse("my_view"))
self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual() # want to check that cache is set
Есть ли способ подружить кэш django с fakeredis и проверить, что значение появляется в кэше?
Импортируйте from django.core.cache import cache
и проверьте значение кэша после первого вызова.