Тестирование 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)