Python mock()不模拟返回值

2024-09-22 14:31:14 发布

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

我在使用Python mock()时遇到了一些问题,我还不太熟悉,不知道怎么回事。在

我有一个抽象的异步任务类,类似于:

class AsyncTask(object):
    @classmethod
    def enqueue(cls):
        ....
        task_ent = cls.createAsyncTask(body, delayed=will_delay)
        ....

我想为这个类的特定实例修补createAsyncTask方法。在

我写的代码看起来像:

^{pr2}$

当我在队列中打印出任务时,我得到<MagicMock name='createAsyncTask()' id='140578431952144'>

当我在队列中打印出cls.createAsyncTask时,我得到<MagicMock name='createAsyncTask' id='140578609336400'>

我做错什么了?为什么createAsyncTask不返回12?在


Tags: nameidtaskobject队列defmockclass
1条回答
网友
1楼 · 发布于 2024-09-22 14:31:14

尝试以下操作:

@patch("package_name.module_name.createAsyncTask")
def test_my_test(self, mock_create_task):
    ....
    mock_create_task.return_value = "12"
    fn()    # calls CustomAsyncTaskClass.enqueue(...)
    ....

其中module_name是包含类AsyncTask的模块的名称。在

一般来说,这是准则https://docs.python.org/3/library/unittest.mock.html#where-to-patch

相关问题 更多 >