Пересмешивающий редис соединение в pytest - PullRequest
0 голосов
/ 02 февраля 2020

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

...