首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django中使用django-redis和mockredis模拟redis

如何在django中使用django-redis和mockredis模拟redis
EN

Stack Overflow用户
提问于 2019-02-24 16:13:03
回答 1查看 2K关注 0票数 2

Redis在django设置中配置如下:

代码语言:javascript
复制
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}

CACHE_TTL = 3600

我有以下使用redis缓存的视图:

代码语言:javascript
复制
from django.core.cache import cache

class TestView(APIView):
    def post(self, request):
        serializer = TestSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            data = serializer.data
            # save new data to cache
            cache.set(data['title'], data, timeout=CACHE_TTL)
            return Response(data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我有一个测试,它使用上面的视图并使用缓存:

代码语言:javascript
复制
class MyTest(APITestCase):
    @patch('redis.StrictRedis', mock_strict_redis_client)
    def test_create(self):
        url = reverse('test-list')
        data = {'title': '77test'}
        response = self.client.post(url, data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(IP.objects.count(), 1)
        self.assertEqual(IP.objects.get().title, '77test')

问题是它使用真正的redis缓存,而不是使用mocked缓存。我正在浏览http://niwinz.github.io/django-redis/latest/#_testing_with_django_redishttps://github.com/locationlabs/mockredis,但我不明白我做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2019-07-28 21:54:07

您可以使用django中的django-fakeredis轻松模拟djagno-redis

在您的案例中:

代码语言:javascript
复制
from django_fakeredis.fakeredis import FakeRedis
....
@FakeRedis("yourview.cache"):
def test_create(self)
    ....

如果使用get_redis_connection,您可以:

代码语言:javascript
复制
from django_fakeredis.fakeredis import FakeRedis
@FakeRedis("yourpath.get_redis_connection")
def test_foo():
    ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54849998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档