Make Freezegun work with SqlAlchemyΒΆ
Freezegun
allows to freeze time during tests, this is particularly useful when testing APIs with timestamps.
By default freezegun
does not work well with SqlAlchemy
, the timestamps it generates are not frozen.
You can use the following approach to make freezegun
work with SqlAlchemy
class Model(Base):
...
created_at = Column(DateTime, default=datetime.utcnow)
...
def _now():
return datetime.utcnow()
class Model(Base):
...
created_at = Column(DateTime, default=_now)
...
Freezegun documentation : https://github.com/spulec/freezegun