Я пытаюсь проверить свое приложение с 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_utils.redis_connect
содержание:
def redis_connect() -> Redis:
return Redis(**settings.REDIS_SETTINGS)
Но это не удается, когда мое приложение пытается получить доступ к данным из базы данных redis (я вызываю .get()
в экземпляре redis).
AssertionError: assert <MagicMock name='redis_connect.get()' id='139688062779600'> is None
Что можно сделать, чтобы функция redis_connect
вернула этот конкретный экземпляр : redis.Redis('127.0.0.1', 6337)
?