用Python模拟Redis

3
我可以帮您翻译这段与IT技术相关的中文内容。将"Original Answer"翻译成中文是"最初的回答"。以下是需要翻译的内容:

我正在尝试模拟Redis以便测试我的Python应用程序,该应用程序是使用Django构建的。所有Redis实例都来自名为record的模块,其中init.py文件包含以下内容:

redis_client = redis.from_url(os.environ.get("REDIS_URL"))

我尝试使用mockredis来修补实例,但它没有起作用。以下是更多的代码:

Original Answer翻译成“最初的回答”。

class TestReleaseDashboard(TestCase):
    def setUp(self):

        # patch redis
        redis_patcher = patch('record.redis_client', mock_redis_client())
        self.redis = redis_patcher.start()
        self.addCleanup(redis_patcher.stop)

        # add data
        self.redis.set('LATEST_UPDATE', 'Fall 2012')
        self.redis.set('NEXT_UPDATE', 'Spring 2013')

    def test_can_filter_pensions(self):
        print(redis_client)
        print(self.redis)

这两个打印语句的结果是:

Original Answer翻译成"最初的回答"

Redis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
<mockredis.client.MockRedis object at 0x1132924d0>

我该怎么做才能修复这个问题并模拟实例?

将原始答案翻译成“最初的回答”。

2个回答

5

我刚刚遇到了同样的问题,以下是我如何模拟redis实例的方法。希望对某些人有所帮助。使用原问题中的代码,可以采取以下措施:

import fakeredis

@patch("redis_instance", fakeredis.FakeStrictRedis())
def test_can_filter_pensions(self):
    print(redis_client)

结果:

FakeStrictRedis<ConnectionPool<FakeConnection<server=<fakeredis._server.FakeServer object at 0x7fe87eb99410>,db=0>>>

如何获取此fakeredis的“host”? - undefined
你可以向它提供连接参数。它将为每个唯一的连接参数创建一个虚拟服务器。请记住,这是一种内存实现,实际上并不连接到其他主机。 - undefined

4

https://birdisle.readthedocs.io/en/latest/user.html 还实现了 Redis 的完整命令列表。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接