我有一个涉及多个Django View 的测试

似乎不是在多个 View 之间共享fakeredis
我尝试运行以下代码:

import fakeredis
from testfixtures import Replacer


class TestWithFakeRedis(TestCase):
    def setup_redis(self, test_func):
        fake_redis = fakeredis.FakeStrictRedis()
        with Replacer() as replace:
            replace('app1.views.redis_connection', fake_redis)
            replace("app2.views.redis_connection", fake_redis)
            replace("app2.views.redis_connection", fake_redis)
            test_func(fake_redis)

    def test_something(self):
         def test_func(redis_connection):
            # some testing coded here
            pass
         self.setup_redis(test_func)

fakeredis无法在多个 View 之间传递,这是我需要的东西

提前致谢,

纳达夫

最佳答案

我的解决方案涉及使用unittest.mock.patch:

import fakeredis
fake_redis = fakeredis.FakeRedis()

@patch("app_name1.views.redis_connection", fake_redis)
@patch("app_name2.views.redis_connection", fake_redis)
@patch("app_name3.views.redis_connection", fake_redis)
class TestSomethingWithRedis(TestCase):
    pass

如果您想在测试中检查查询
使用fake_redis

关于django - 多个Django View 之间的fakeredis,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62292568/

10-15 10:03