【问题标题】: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'}}):
    

    【讨论】:

    • 这是完美的。谢谢
    猜你喜欢
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2010-09-15
    • 2018-07-05
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多