如何使用特定查询模拟django数据库连接

时间:2018-11-13 22:52:01

标签: django unit-testing

我正在编写测试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

这也不起作用。

0 个答案:

没有答案