Что выведет код Middle Тестирование и pytest обновлено
Mock записывает вызовы
Вопрос
Что выведет код? По строке на каждый print.
from unittest.mock import Mock
gateway = Mock()
gateway.charge.return_value = {'status': 'ok'}
def pay(gw, amount):
if amount <= 0:
return 'skip'
return gw.charge(amount=amount)['status']
print(pay(gateway, 100), pay(gateway, 0))
print(gateway.charge.call_count, gateway.charge.call_args.kwargs)
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: ok skip, 1 {'amount': 100}. returnvalue задаёт ответ мока.
Что выведет
ok skip
1 {'amount': 100}
Разбор
return_value задаёт ответ мока. Для нуля функция не вызывает шлюз. Мок посчитал один вызов и запомнил его аргументы: call_args.kwargs хранит именованные аргументы последнего вызова.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.