Как смоделировать соединение с базой данных django по конкретному запросу - PullRequest
0 голосов
/ 14 ноября 2018

Я пишу юнит-тестирование моего django-приложения. В этом классе есть запрос db, который вызывает db не по умолчанию (postgresql), а для моделей установлено значение managed=False (к сожалению, это нельзя изменить)

теперь в скрипте есть вызов, похожий на

def get(self, request, some_other_stuff):
    # some script
    query = """select * from <schema>.<table>....."""
    with connections[non_default_db].cursor() as cursor:
        cursor.execute(query)
        rs = cursor.fetchall()
    # some other script

Я хочу издеваться над rs, но я не могу заставить правильно смоделировать модуль / объект.

Я пытался @mock.patch("django.db.backends.util.CursorWrapper", self.cursor_wrapper), где self.cursor_wrapper = mock.Mock(). Не сработало.

также пытался

with mock.patch('psycopg2.connect') as mock_connect:
    rs = result_set_I_want_to_mock_return
    mock_connect.cursor.return_value.execute.return_value = rs

это тоже не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...