You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django测试中如何正确配置DummyCache,解决default缓存不存在报错

问题修复方案

错误原因

你对override_settings的用法存在错误:Django的CACHES配置项接收的是完整的缓存配置字典,你直接将其赋值为字符串'test',会覆盖掉全局所有缓存配置,导致其他代码调用默认的default缓存时找不到对应配置,触发报错。

修复方法

方案1:全局测试缓存配置(无需装饰器,推荐)

直接在原有default缓存配置中新增测试场景下的专用配置,Django运行测试时会自动生效,不会影响开发环境的正常缓存使用,也不需要额外添加装饰器:

# settings.py 中的原有CACHES配置
CACHES = {
    'default': {
        # 保留你原来的default缓存原有配置
        'BACKEND': 'django.core.cache.backends.redis.RedisCache', # 示例原有配置
        'LOCATION': 'redis://127.0.0.1:6379/0', # 示例原有配置
        # 新增测试环境专属配置
        'TEST': {
            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
        }
    },
    # 你之前新增的test缓存配置可以保留也可以删除,本方案不需要依赖它
    'test': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
    }
}

方案2:单测试类/用例覆盖配置

如果你只需要给特定测试类/用例设置DummyCache,可以在override_settings中传入完整的CACHES配置,保留所有必要的缓存别名:

from django.test import override_settings

@override_settings(
    CACHES = {
        # 保留default缓存,替换为DummyCache
        'default': {
            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
        },
        # 其他你需要保留的缓存别名也可以同步写在这里,比如你之前加的test缓存
        'test': {
            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
        }
    }
)
class YourTestClass(TestCase):
    # 你的测试代码

内容的提问来源于stack exchange,提问作者John Mc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:03