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

Моки HTTP: respx и MSW перехватывают сеть, а не клиент

middle~35 мин

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

Оля · DevOps, #qa-antrakt

Ночной прогон опять красный: 14 тестов оплаты упали с ConnectError. Песочница «ПлатиМ» лежала с двух до пяти. Вчера она отвечала, но медленно, и прогон шёл сорок минут вместо восьми. Позавчера мы выбрали их лимит в 100 запросов в час, и половина тестов получила 429.

Дина · интегратор «ПлатиМ», #platim-antrakt

Песочница у нас общая на всех клиентов, гарантий по ней нет, это в договоре. И да, отказ по карте и 500 в песочнице не закажешь: она всегда отвечает «оплачено».

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

Значит, тесты нашего клиента «ПлатиМ» вообще не должны ходить в их песочницу. Тимур клиент под внедрение пока не переделает, поэтому подменяем не клиент, а сеть под ним. И заодно наконец проверим, что мы делаем, когда шлюз отвечает отказом или молчит.

В прошлом уроке ты ждал, пока чужая система договорит: письмо придёт, статус сменится. Сегодня обратная задача. Наш код говорит с чужой системой, и мы хотим проверить, как он себя ведёт, не трогая её вовсе. Причём во всех настроениях этой системы: и когда она отвечает «оплачено», и когда отказывает, и когда падает, и когда молчит.

Тренажёр пилота

Пилота не учат садиться в грозу, дожидаясь грозы. Его сажают в тренажёр. Кабина в тренажёре настоящая: те же приборы, тот же штурвал, те же руки пилота. Подделан только мир за стеклом. Инструктор нажимает кнопку, и за стеклом гроза, отказ двигателя, боковой ветер, то, что в настоящем небе не закажешь по расписанию.

Клиент «ПлатиМ» это кабина. Мы не будем подменять в нём ни одной детали: пусть строит URL, собирает заголовки, сериализует JSON и ловит ошибки, как в бою. Подменим только то, что за стеклом: сеть. И сами решим, какая там сегодня погода.

урок из курса

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

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