Другие объяснили, почему написание тестов, которые зависят от текущего времени, является плохой идеей (например, невоспроизводимые ошибки и неспособность проверить специальные даты, такие как переходы летнего времени).Поэтому при тестировании сериализаторов я использовал следующий шаблон:
def test_should_be_valid_if_best_before_a_future_date(self) -> None:
serializer = MyModel(
data={
'best_before': datetime.datetime(…),
…
},
context={'now': datetime.datetime(…)},
)
self.assertTrue(serializer.is_valid())
Этот шаблон упрощает проверку того, что происходит, когда, например, best_before
до, в и после.
Я не нашел похожий шаблон для фильтров - у них, похоже, нет свойства context
.Как бы я проводил аналогичные тесты для фильтров, в идеале ничего не насмехаясь, поскольку это делает тест зависимым от деталей реализации?