Freezing
provide.testkit.time.freezing
¶
Time freezing fixtures for testing.
Fixtures for freezing time and controlling time flow in tests.
Classes¶
Functions¶
freeze_time
¶
Fixture to freeze time at a specific point.
Returns:
| Type | Description |
|---|---|
Callable[[datetime | None], FrozenTime]
|
Function that freezes time and returns a context manager. |
Example
def test_with_frozen_time(freeze_time): ... with freeze_time(datetime.datetime(2024, 1, 1)) as frozen: ... # Time is frozen at 2024-01-01 ... frozen.tick(seconds=60) # Advance by 60 seconds
Source code in provide/testkit/time/freezing.py
time_machine
¶
Advanced time manipulation fixture.
Yields:
| Type | Description |
|---|---|
TimeMachine
|
TimeMachine instance for time manipulation. |
IMPORTANT: Uses request.addfinalizer() to ensure patches are stopped BEFORE pytest-asyncio creates event loops for the next test. Also forcibly closes ALL event loops to prevent cached frozen time.monotonic references.
Example
def test_with_time_machine(time_machine): ... time_machine.freeze(at=time.time()) ... # Perform tests with frozen time ... time_machine.jump(seconds=60) # Jump forward ... time_machine.unfreeze()