Раздел 43 · Автотестирование с нуля

Моки на практике

junior~45 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Вера Ланская · лид QA, #qa-antrakt

Вчера «ПлатиМ» вернул одному зрителю деньги дважды: Тимур правил возвраты, и команда refund стала уходить два раза. Бухгалтерия заметила через сутки. У Глеба есть test_refund, и он всё это время был зелёным. Он и сейчас зелёный. Второй тест, test_tickets, наоборот, краснеет от любой правки Тимура, и Тимур его уже не запускает. Один тест молчит при баге, другой кричит без бага. Почини оба.

В прошлом уроке ты разложил двойников по полкам: заглушка отвечает, шпион записывает, мок проверяет вызовы, фейк работает по-настоящему, но в памяти. Сегодня берём в руки настоящие инструменты, unittest.mock и vi.fn, и учимся главному: что у зависимости проверять, а что нет. Ошибиться можно в обе стороны, и у Глеба есть пример каждой.

Буфет в антракте

В антракте в буфете «Антракта» работает буфетчица Зоя. Зритель просит два эклера и чай: это команда, после неё мир меняется. Другой зритель спрашивает, есть ли кофе без кофеина: это вопрос, после него ничего не меняется. Зоя тоже кое-что делает сама. Она говорит на кухню «ещё десяток эклеров», это её команда наружу. И спрашивает кухню, остался ли сыр, это её вопрос наружу.

Допустим, ты проверяешь работу Зои. Что смотреть? Получил ли зритель свои эклеры и правильную сдачу: это результат. Ушёл ли на кухню заказ на десять эклеров, а не на сто: от этого зависит, чем буфет будет торговать завтра. А сколько раз Зоя спросила кухню про сыр, раз или три, тебе всё равно. Важно, что сыр в бутерброде есть.

Проверку Зои по числу вопросов про сыр назовут придиркой. С тестами так же: тест, который считает вопросы, краснеет без бага. А тест, который не смотрит на заказ кухне, пропустит заказ на сто эклеров.

урок из курса

Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.