我在使用 Python mock() 时遇到了一些麻烦,而且我还不够熟悉,无法弄清楚它发生了什么。
我有一个抽象的异步任务类,看起来像:
class AsyncTask(object):
@classmethod
def enqueue(cls):
....
task_ent = cls.createAsyncTask(body, delayed=will_delay)
....
我想为此类的特定实例修补 createAsyncTask 方法。
我写的代码如下:
@patch.object(CustomAsyncTaskClass, "createAsyncTask")
def test_my_test(self, mock_create_task):
....
mock_create_task.return_value = "12"
fn() # calls CustomAsyncTaskClass.enqueue(...)
....
当我在队列中打印出 task_ent 时,我得到<MagicMock name='createAsyncTask()' id='140578431952144'>
当我在队列中打印出来cls.createAsyncTask
时,我得到<MagicMock name='createAsyncTask' id='140578609336400'>
我究竟做错了什么?为什么 createAsyncTask 不会返回 12?