Я пишу юнит-тестирование моего 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
это тоже не работает.