在测试中使用Django缓存强制连接错误

时间:2017-01-06 10:49:32

标签: django python-3.x caching testing

当Django无法连接到我想要测试的缓存时,我有代码处理ConnectionError

我遇到的问题是,如果没有实际禁用真正的缓存,我无法在测试中模拟它。

我尝试过使用Django设置覆盖:

with self.settings(CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}}):

然而,上述仅模拟缓存,而不是它不可用。

有办法做到这一点吗?

提前致谢。

1 个答案:

答案 0 :(得分: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'}}):