我有以下(简化的)代码:
def get_redis()
return redis_instance
def bar(key, value, redis=get_redis())
redis.set(key, value)
def foo()
bar("key", value)
在我的测试中,我想模拟函数get_redis
以返回 的实例fakeredis.FakeStrictRedis()
,所以我这样做了
def test_foo(mocker):
mocker.patch("app.main.get_redis", return_value=fakeredis.FakeStrictRedis())
foo()
模拟函数没有效果,该foo
函数尝试使用 main 中的 get_redis 函数连接到真正的 redis。
如果我以这种方式写作有效
def bar(key, value)
redis=get_redis()
redis.set(key, value)
这可行,但我可以将 redis 作为默认值传递。我怎么能嘲笑?