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 и проверьте значение кэша после первого вызова.

Вернуться на верх