Я пытаюсь протестировать свое приложение с помощью 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)
?