Ожидание условия с таймаутом, которое можно проверить без реального времени
Нужна утилита ожидания для автотестов. Чтобы её можно было протестировать без реальных пауз, часы и сон передаются параметрами.
Напишите функцию wait_until(condition, timeout, interval, clock, sleep).
- Вызывает
condition(). Если результат истинный — сразу возвращает его. - Иначе вызывает
sleep(interval)и пробует снова. - Время отсчитывается по
clock()— функции, возвращающей секунды. Если с первого вызоваclock()прошло большеtimeout, а условие так и не выполнилось, бросьтеTimeoutError. - Порядок на каждой попытке: проверить условие, затем проверить время, и только потом спать. Если таймаут уже превышен, не спите ещё раз — сразу бросайте
TimeoutError.
заготовка решения
def wait_until(condition, timeout, interval, clock, sleep):
# ваш код
return None