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
相关产品推荐
相关产品推荐

