使用 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() 是一个例子。