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

Асинхронные операции: ждать по условию, а не по часам

middle~35 мин

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

Тимур · бэкенд, #qa-antrakt

Перевёл отправку билетов на очередь: заказ теперь отвечает сразу, а письмо уходит через секунду-две, когда до него доберётся воркер. Тест на письмо покраснел, я поставил перед проверкой sleep(5), позеленел. Вливаю?

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

Не вливай. У нас уже есть time.sleep(2) Глеба, и тот тест раз в неделю падает на общем стенде. Пусть сначала посчитают, сколько секунд ночного прогона мы просто спим. И перепишите оба места на ожидание по условию.

Почти весь блок F запрос и ответ шли подряд: послал POST /orders, получил заказ, проверил. Но часть того, что делает «Антракт», происходит не в момент ответа. Письмо уходит через очередь. Статус оплаты меняется, когда «ПлатиМ» пришлёт вебхук. Новое событие появляется в поиске после переиндексации. Тест должен дождаться результата, и вопрос урока в том, как ждать правильно.

Ждать маршрутку

Маршрутка ходит раз в десять минут. Можно встать на остановке и смотреть в телефон ровно десять минут, а потом поднять глаза. Если она пришла через две, ты восемь минут зря простоял, а она уехала. Если опоздала на одиннадцатую минуту, ты решишь, что её не будет, и уйдёшь пешком.

Нормальный человек ждёт иначе: поглядывает на дорогу каждые полминуты, садится, как только маршрутка подошла, а если её нет двадцать минут, перестаёт ждать и вызывает такси. Три решения: как часто смотреть, сколько ждать максимум и что делать, если не дождался.

sleep(5) это стоять, уткнувшись в телефон. Сегодня разберём, как поглядывать на дорогу.

урок из курса

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

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