Python 在pytest中模拟redis连接

Python 在pytest中模拟redis连接,python,redis,pytest,python-mock,Python,Redis,Pytest,Python Mock,我正在尝试使用pytest测试我的应用程序。应用程序使用Redis存储变量,对该变量的更改将实时报告给与应用程序连接的用户 我想创建这样一个装置,它将在我的应用程序中修补Redis()构造函数,以连接在后台运行的本地Redis数据库 我在我的conftest.py中尝试过类似的方法: @pytest.fixture(autouse=True) def redis_connection(): r_conn = redis.Redis('127.0.0.1', 6337) with

我正在尝试使用
pytest
测试我的应用程序。应用程序使用Redis存储变量,对该变量的更改将实时报告给与应用程序连接的用户

我想创建这样一个装置,它将在我的应用程序中修补
Redis()
构造函数,以连接在后台运行的本地Redis数据库

我在我的
conftest.py中尝试过类似的方法:

@pytest.fixture(autouse=True)
def redis_connection():
    r_conn = redis.Redis('127.0.0.1', 6337)
    with mock.patch('app.redis_utils.redis_connect') as redis_connect_mock:
        redis_connect_mock.return_value = r_conn
        yield redis_connect_mock
    r_conn.flushdb()

app.redis\u utils.redis\u connect
内容:

def redis_connect() -> Redis:
    return Redis(**settings.REDIS_SETTINGS)
但当我的应用程序尝试从redis数据库访问数据时(我在redis实例上调用
.get()
),这会失败

AssertionError:assert为None

如何强制
redis\u connect
函数返回此特定实例:
redis.redis('127.0.0.1',6337)

你可能应该考虑使用ReIIS模拟库。
AssertionError: assert <MagicMock name='redis_connect.get()' id='139688062779600'> is None