0

У меня проблемы с Python mock(), и я недостаточно знаком, чтобы понять, что с ним происходит.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'>

Что я Я делаю неправильно? Почему createAyncTask не возвращает 12?

+0

извед, игнорировать это - у меня были аргументы за то в обратном направлении. Я не могу понять, как удалить вопрос, извините = ( – user358829

ответ

0

Попробуйте следующее:

@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

Смежные вопросы