Вступить в клуб →
сложнаявопросТестирование: pytest, фикстуры, моки

Тест «заказ создан сегодня» падает на CI только по ночам

def is_created_today(order):
    return order.created_at.date() == datetime.now().date()

def test_new_order_is_today():
    order = create_order()        # created_at = datetime.now(timezone.utc)
    assert is_created_today(order)

У разработчиков в Москве тест всегда зелёный. Сервер CI работает в UTC, и тест падает там в прогонах между полуночью и тремя часами ночи по Москве. Что происходит?

  • Сравниваются дата в UTC и дата по местному времени — ночью они разные
  • CI в полночь очищает базу, и заказ пропадает до проверки
  • datetime.now() на CI возвращает время с задержкой в несколько часов
  • date() у объекта с часовым поясом ночью бросает исключение

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела