Тестирование Django Cache

В библиотеке API-клиента, которая поддерживает Django, я реализую способ для пользователей настроить Django Cache, когда API-клиент используется в Django-приложении.

Как мне протестировать поведение кэширования без реального приложения Django в библиотеке клиента? У меня есть tox, установленный с pytest-django в качестве тестового требования, но я не думаю, что я использую его правильно. Я получаю эту ошибку при запуске test_django_cache.py:

django.core.cache.backends.base.InvalidCacheBackendError: The connection 'django.core.cache.backends.dummy.DummyCache' doesn't exist.

# test_django_cache.py

import django
from django.conf import settings

from .django_cache import DjangoCache


settings.configure()
django.setup()



def test_set_get(settings):
    cache_name = 'django.core.cache.backends.dummy.DummyCache'

    cache = DjangoCache(cache_name=cache_name)
    
    vals = {
     "status": "live",
     "configuration": {
        "name": "features",
        "value": ["bi_connector", "google_tag_manag

Blockquote

er"]
        }
    }
          
    cache_key = 'client.040e0ec3-2578-4fcf-b5db-030dadf68f30.live'
    cache.set(key=cache_key, value=vals)
    assert cache.get(key=cache_name) == vals
# django_cache.py
class DjangoCache:
    def __init__(self, cache_name, cache_timeout=60):
        self.cache_name = cache_name
        self.cache_timeout = cache_timeout
        self._django_cache = None

    def get_django_cache(self):
        if not self._django_cache:
            from django.core.cache import caches
            self._django_cache = caches[self.cache_name]
        return self._django_cache

    def set(self, key, value):
        kwargs = {}
        if self.cache_timeout is not None:
            kwargs['timeout'] = self.cache_timeout
        return self.get_django_cache().set(key, value, **kwargs)

    def get(self, key):
        return self.get_django_cache().get(key)
Вернуться на верх