我正在编写测试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
这也不起作用。