【问题标题】:Force ConnectionError with Django cache in Tests在测试中使用 Django 缓存强制 ConnectionError
【发布时间】:2017-05-21 02:49:36
【问题描述】:
当 Django 无法连接到缓存时,我有处理 ConnectionError 的代码,我想测试一下。
我遇到了一个问题,即如果没有真正禁用真正的缓存,我就无法在测试中模拟它。
我尝试过使用 Django 设置覆盖:
with self.settings(CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}}):
不过上面只模拟了一个缓存,并不是说它不可用。
有没有办法做到这一点?
提前致谢。
【问题讨论】:
标签:
django
python-3.x
caching
testing
【解决方案1】:
您可以编写自己的缓存后端来引发ConnectionError。
from django.core.cache.backends.base import BaseCache
class UnavailableCache(BaseCache):
...
def get(self, *args, **kwargs)
raise ConnectionError()
...
然后在self.settings中使用这个后端:
with self.settings(CACHES={'default': {'BACKEND': 'path.to.UnavailableCache'}}):