使 MagicMock 返回 None

问题描述 投票:0回答:0

我正在尝试创建 mysql 连接器的 MagicMock 实例,但我需要方法“fetchone”返回 None。

这是我到目前为止所做的:

with mock.patch('mysql.connector.cursor') as dbmock, \
       mock.patch('mysql.connector.connect', mock.MagicMock()):
        dbcursor_mock = dbmock.return_value  # Get the mock for the cursor
        dbcursor_mock.fetchone.return_value = None  # Set the return value of fetchone

问题是这会返回一个 MagicMock 实例而不是 None。

现在,如果我删除第二个补丁,它确实有效:

with mock.patch('mysql.connector.cursor') as dbmock):
        dbcursor_mock = dbmock.return_value  
        dbcursor_mock.fetchone.return_value = None  # this does return None, Why?

但是我的代码将尝试连接到数据库并失败。

如何让 MagicMock 的实例返回 None?

mysql python-3.x python-unittest python-unittest.mock magicmock
© www.soinside.com 2019 - 2024. All rights reserved.