使用 Django Rest Framework 测试的 Redis 缓存
Redis Cache With Django Rest Framework Testing
在我当前的项目中,我有一些代码需要缓存(我现在使用 Redis)。因此我不能使用假缓存或模拟。通过测试我需要一个干净的缓存,所以在 setup
的测试用例 class 我使用以下内容:
from django_redis import get_redis_connection
get_redis_connection("default").flushall()
这会破坏并行测试(并且会造成竞争条件)。
使用主动缓存进行测试的最佳实践是什么?
对于任何路过的人,我在测试时将缓存后端更改为 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()
是一个例子。
在我当前的项目中,我有一些代码需要缓存(我现在使用 Redis)。因此我不能使用假缓存或模拟。通过测试我需要一个干净的缓存,所以在 setup
的测试用例 class 我使用以下内容:
from django_redis import get_redis_connection
get_redis_connection("default").flushall()
这会破坏并行测试(并且会造成竞争条件)。 使用主动缓存进行测试的最佳实践是什么?
对于任何路过的人,我在测试时将缓存后端更改为 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()
是一个例子。