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(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'
Happy time travelling!
If you found this helpful, please share this article!