Cas*_*sey 3 python testing mocking redis
我正在尝试模拟 redis 以启用对在 Django 中构建的 python 应用程序的测试。我的所有 Redis 实例都来自名为 record 的模块,其init .py 文件包含:
redis_client = redis.from_url(os.environ.get("REDIS_URL"))
Run Code Online (Sandbox Code Playgroud)
我尝试使用mockredis修补实例,但它不起作用。这是模式代码:
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)
Run Code Online (Sandbox Code Playgroud)
这两个打印语句的结果是:
Redis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
<mockredis.client.MockRedis object at 0x1132924d0>
Run Code Online (Sandbox Code Playgroud)
我可以做什么来解决这个问题并模拟实例?
我刚刚遇到了同样的问题,这就是我嘲笑我的redis实例的方式。希望它能帮助某人。鉴于原始问题的代码,请使用:
import fakeredis
@patch("redis_instance", fakeredis.FakeStrictRedis())
def test_can_filter_pensions(self):
print(redis_client)
Run Code Online (Sandbox Code Playgroud)
结果:
FakeStrictRedis<ConnectionPool<FakeConnection<server=<fakeredis._server.FakeServer object at 0x7fe87eb99410>,db=0>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9068 次 |
| 最近记录: |