TIL: time travel with Python’s standard library

Til

There are a few different approaches for writing tests for date and/or time-sensitive functionality.

One could choose to add a sleep() in the test, which would guarantee that the time passed, but that also has the downside of increasing the run time of the test.

Another option is to reach out to external libraries or packages but Python’s standard library already supports some “time travel”  functionality with the datetime module.

>>> import datetime
>>> datetime.date.today()
datetime.date(2023, 2, 28)
>>> datetime.datetime.now()<br>datetime.datetime(2023, 2, 28, 12, 35, 16, 123614)

We can use a string format to make these outputs a little friendlier:

>>> datetime.date.today().strftime("%Y-%m-%dT%H:%M:%SZ")
'2023-02-28T00:00:00Z'

>>> datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
'2023-02-28T12:36:48Z'

For the “time travel” part we will use “timedelta”:

>>> search_time = (datetime.datetime.now() + datetime.timedelta(minutes=5)).strftime("%Y-%m-%dT%H:%M:%SZ")

>>> search_time
'2023-02-28T12:41:48Z'

Check out the official documentation for other supported parameters for timedelta.

Happy time travelling!


Thank you for reading!

I'd love to hear your thoughts — let's keep the conversation going on X: @Flavia_SBastos

SHARE X/Twitter | LinkedIn | Email |