Fake the time.sleep/asyncio.sleep function during tests.
Project description
⏰ SleepFake
SleepFake
is a compact Python package (under 100 lines) that provides a context manager to simulate the time.sleep
and asyncio.sleep
functions during tests. This is useful for testing time-dependent code without the need to actually wait for time to pass. The real magic behind this package comes from freezegun. 🎩✨
Installation
pip install sleepfake
🚀 Usage
Context Manager
import asyncio
import time
from sleepfake import SleepFake
def test_example():
real_start = time.time()
with SleepFake():
start = time.time()
time.sleep(10)
end = time.time()
assert end - start == 10
real_end = time.time()
assert real_end - real_start < 1
@pytest.mark.asyncio
async def test_async_example():
real_start = asyncio.get_event_loop().time()
with SleepFake():
start = asyncio.get_event_loop().time()
await asyncio.gather(asyncio.sleep(5), asyncio.sleep(5), asyncio.sleep(5))
end = asyncio.get_event_loop().time()
assert end - start <= 5.5 # almost 5 seconds # noqa: PLR2004
assert end - start >= 5 # almost 5 seconds # noqa: PLR2004
real_end = asyncio.get_event_loop().time()
assert real_end - real_start < 1 # almost 0 seconds
With Fixture (Beta)
import asyncio
import time
from sleepfake import SleepFake
def test_example(sleepfake: SleepFake):
start = time.time()
time.sleep(10)
end = time.time()
assert end - start == 10
@pytest.mark.asyncio
async def test_async_example(sleepfake: SleepFake):
start = asyncio.get_event_loop().time()
await asyncio.gather(asyncio.sleep(5), asyncio.sleep(5), asyncio.sleep(5))
end = asyncio.get_event_loop().time()
assert end - start <= 5.5 # almost 5 seconds # noqa: PLR2004
assert end - start >= 5 # almost 5 seconds # noqa: PLR2004
Local Development
Prerequisites
Install rye
curl -sSf https://rye-up.com/get | bash
Install dep
rye sync
Run tests
rye run test
Run linter
rye run lint
Acknowledgments 🙏
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sleepfake-1.0.3.tar.gz
(7.0 kB
view hashes)
Built Distribution
Close
Hashes for sleepfake-1.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f527b6219efddc45c1cd8880838b7a8b16b7367a92cbb0a244178a998f5ebf3 |
|
MD5 | 0a292069bdeaaaf66393997629b7f375 |
|
BLAKE2b-256 | 917ac1aa8b4b33136bdbba92a36117bcef6a21b2abe5d1be9139a1208458e8c1 |