【问题标题】:Redis Cache With Django Rest Framework TestingRedis 缓存与 Django Rest 框架测试
【发布时间】:2021-08-19 14:08:01
【问题描述】:
在我当前的项目中,我有一些需要缓存的代码(我现在使用 Redis)。因此,我不能使用假缓存或模拟。通过测试我需要一个干净的缓存,所以在setup 的测试用例类我使用以下内容:
from django_redis import get_redis_connection
get_redis_connection("default").flushall()
这会破坏并行测试(并且会产生竞争条件)。
使用主动缓存进行测试的最佳做法是什么?
【问题讨论】:
标签:
testing
caching
django-rest-framework
redis
【解决方案1】:
对于路过的人,我在测试时已将缓存后端更改为LocMemCache。之后,缓存不再受并行测试的影响。
类似这样的:
TESTING = 'test' in sys.argv
if TESTING:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
else:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': REDIS_HOST,
}
}
注意:RedisCache 支持的某些操作,LocMemCache 不支持。 cache.ttl() 就是一个例子。