我正在尝试模拟Django应用程序中的redis。我尝试过几种不同的方法,但似乎都没有用。我做错了什么?
调用我的主redis实例时:
redis_client = redis.from_url(os.environ.get("REDIS_URL"))该实例被导入到应用程序的其他部分,以便添加和检索数据。
在我的测试中我试着做:
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并设置值,以便它们在测试我的应用程序时可用?
发布于 2018-04-03 14:35:48
您应该在使用它的地方,而不是从哪里来,来模仿它。
因此,如果在这样的视图中使用redis_client:
myapp/views.py
from somemodule import redis_client
def some_view_that_uses_redis(request):
result = redis_client(...)然后,在您的TestViews中,您应该像这样修补redis_client:
class TestViews(TestCase):
def setUp(self):
redis_patcher = patch('myapp.views.redis_client', fakeredis.FakeRedis)
self.redis = redis_patcher.start()https://stackoverflow.com/questions/49615815
复制相似问题