Examples¶
Skip timeouts¶
Tests are deterministic and take no time with time travel. For example:
with TimeTravel():
assert time.time() == 86400
time.sleep(200)
assert time.time() == 86600
with TimeTravel(modules_to_patch=__name__):
assert datetime.today() == datetime.fromtimestamp(86400)
time.sleep(250)
assert datetime.today() == datetime.fromtimestamp(86650)
import module1
import module2
with TimeTravel(modules_to_patch=['module1', 'module2']) as time_machine:
time_machine.set_time(100000)
module1.very_long_method()
module2.time_sensitive_method()
Patching I/O events modules¶
With time-travel
you can fake future events for I/O modules:
with TimeTravel() as t:
sock = socket.socket()
t.add_future_event(2, sock, t.event_types.select.WRITE)
now = t.clock.time
assert select.select([], [sock], []) == ([], [sock], [])
assert time.time() == now + 2
assert datetime_cls.today() == datetime_cls.fromtimestamp(now + 2)
Or using poll
(for supported platforms only):
with TimeTravel() as t:
sock = socket.socket()
t.add_future_event(2, sock, select.POLLIN)
poll = select.poll()
poll.register(sock, select.POLLIN | select.POLLOUT)
now = t.clock.time
assert poll.poll() == [(sock, select.POLLIN)]
assert time.time() == now + 2