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

Время и случайность: тесты без ожидания и без лотереи

junior~40 мин

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

Оля · DevOps, #qa-antrakt

Ночной прогон идёт 41 минуту, из них 10 минут один тест просто спит: test_hold_expires Глеба ждёт, пока истечёт бронь. А соседний test_hold_expires_today раз в неделю красный, и всегда после 23:50. Перезапускаю, зеленеет. Можно что-то сделать до «Ночи продаж»? Минуты CI не бесплатные, и я устала нажимать «перезапустить».

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

Репетиция с перемоткой

На генеральной репетиции режиссёр не ждёт вечера, чтобы проверить финал. Он говорит: «Сейчас 22:50, до конца спектакля десять минут», и рабочий сцены переводит стрелки на часах в декорации. Актёры играют финал в два часа дня, и никто не сидит восемь часов в гримёрке.

Тест с поддельными часами устроен так же. Код спрашивает «который час?», а отвечает ему не настоящая система, а тест. Захотел десять минут вперёд, перевёл стрелки, и десять минут прошли мгновенно.

урок из курса

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

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