模拟db游标并断言传递给游标函数的值

2024-03-28 13:54:00 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的源类中,我有以下语句

    def main():
        conn = create_connection()
        cur = conn.cursor()
        cur.execute(query)

在我的测试类中,我试图断言传递给cur.execute方法的“查询”。但是我想模拟create_连接和cursor()函数返回的cursor对象。我能够使用下面的代码模拟创建_连接。如何修补游标并断言传递给execute函数的查询值

    @patch(main.create_connection)
    def test_main(self,mock_conn):

1条回答
网友
1楼 · 发布于 2024-03-28 13:54:00

由于创建的游标已经是一个模拟对象(例如,对模拟对象的每次调用都会创建另一个模拟对象),因此不必配置任何其他内容。您只需获得光标:

@patch('main.create_connection')
def test_main(mock_conn):
    cursor = mock_conn.return_value.cursor.return_value
    main()
    cursor.execute.assert_called_once_with(query)

相关问题 更多 >