Разница между create_autospec и MagicMock (спецификация)Python

Программы на Python
Ответить
Гость
 Разница между create_autospec и MagicMock (спецификация)

Сообщение Гость »


Я пытаюсь понять разницу в подходах к насмешкам. Например, у меня есть класс, который я не могу инициализировать, поскольку он зависит от другого сервиса.

класс SomeClass: def __init__(self, some_service): self.some_service = some_service асинхронная защита some_method(self, x, y): вернуть х + у И у меня есть функция, использующая этот класс

async def some_function(some_class: SomeClass, a, b): вернуть a * b + ждать some_class.some_method(a, b) Я хочу протестировать функцию some_function.

@pytest.mark.asyncio асинхронная защита test_some_function_with_create_autospec(): autospec_mock = create_autospec(SomeClass) autospec_mock.some_method = AsyncMock(return_value=10) результат = ожидайте some_function (autospec_mock, 2, 3) утверждать результат == 16 autospec_mock.some_method.assert_awaited_once_with(2, 3) Но я могу сделать то же самое, используя MagicMock

@pytest.mark.asyncio асинхронная защита test_some_function_with_magic_mock(): autospec_mock = MagicMock (спец = SomeClass) autospec_mock.some_method = AsyncMock(return_value=10) результат = ожидайте some_function (autospec_mock, 2, 3) утверждать результат == 16 autospec_mock.some_method.assert_awaited_once_with(2, 3) В чем разница и что мне следует использовать?

Я прочитал документацию, но все равно ничего не понял
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»