Выбор ответа Middle Тестирование и pytest спрашивают часто обновлено
Где делать patch
Вопрос
Модуль orders.py содержит from notify import send_email и вызывает send_email(...). Какой путь подменять в тесте place_order?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: orders.sendemail. from notify import sendemail копирует ссылку на функцию в пространство имён orders, и placeorder ищет имя именно там.
Варианты ответа
notify.send_emailsend_emailorders.send_emailправильный ответunittest.mock.send_email
Разбор
from notify import send_email копирует ссылку на функцию в пространство имён orders, и place_order ищет имя именно там. Патч notify.send_email заменит атрибут модуля notify, но orders продолжит держать старую ссылку. Правило: патчить там, где имя ищут при вызове. Если бы orders делал import notify и вызывал notify.send_email, правильным был бы путь notify.send_email.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.