🐍 Мокать время в тестах — та ещё головная боль
Обычный mock для дат в Python выглядит просто только на бумаге. На деле — куча импортов, подмен и танцев с бубном. Тут на сцену выходит
Пример:
В отличие от freezegun, библиотека не бегает по всему проекту в поисках импортов. Она цепляется прямо к C API CPython и перехватывает функции даты и времени напрямую. Скорость от количества модулей не зависит — в бенчмарках выходит более чем в 100 раз быстрее freezegun на простых сценариях.
Где реально пригодится:
• подписки и платежи
• истечение токенов
• календарные функции
• планировщики задач
• логика с дедлайнами
#Python #тестирование #CPython
Обычный mock для дат в Python выглядит просто только на бумаге. На деле — куча импортов, подмен и танцев с бубном. Тут на сцену выходит
time-machine: она буквально телепортирует время внутри теста.Пример:
@travel("2030-01-01")
def test_future():
assert dt.date.today() == dt.date(2030, 1, 1)В отличие от freezegun, библиотека не бегает по всему проекту в поисках импортов. Она цепляется прямо к C API CPython и перехватывает функции даты и времени напрямую. Скорость от количества модулей не зависит — в бенчмарках выходит более чем в 100 раз быстрее freezegun на простых сценариях.
Где реально пригодится:
• подписки и платежи
• истечение токенов
• календарные функции
• планировщики задач
• логика с дедлайнами
#Python #тестирование #CPython
❤2👍1🔥1🥰1👏1