首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟Django测试的redis

如何模拟Django测试的redis
EN

Stack Overflow用户
提问于 2018-04-02 17:29:29
回答 1查看 5.3K关注 0票数 3

我正在尝试模拟Django应用程序中的redis。我尝试过几种不同的方法,但似乎都没有用。我做错了什么?

调用我的主redis实例时:

代码语言:javascript
复制
redis_client = redis.from_url(os.environ.get("REDIS_URL"))

该实例被导入到应用程序的其他部分,以便添加和检索数据。

在我的测试中我试着做:

代码语言:javascript
复制
import fakeredis
from mock import patch

class TestViews(TestCase):
    def setUp(self):
        redis_patcher = patch('redis.Redis', fakeredis.FakeRedis)
        self.redis = redis_patcher.start()

        self.redis.set('UPDATE', 'Spring')
        print(redis_client.get('UPDATE'))

    def tearDown(self):
        self.redis_patcher.stop

在运行测试时,我希望设置“UPDATE”变量。但是,相反,redis_client的每个实例都失败了,称服务器不可用。我如何模拟出redis并设置值,以便它们在测试我的应用程序时可用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 14:35:48

您应该在使用它的地方,而不是从哪里来,来模仿它。

因此,如果在这样的视图中使用redis_client

myapp/views.py

代码语言:javascript
复制
from somemodule import redis_client

def some_view_that_uses_redis(request):
    result = redis_client(...)

然后,在您的TestViews中,您应该像这样修补redis_client

代码语言:javascript
复制
class TestViews(TestCase):
    def setUp(self):
        redis_patcher = patch('myapp.views.redis_client', fakeredis.FakeRedis)
        self.redis = redis_patcher.start()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49615815

复制
相关文章

相似问题

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