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.2.tar.gz
(7.0 kB
view hashes)
Built Distribution
Close
Hashes for sleepfake-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c15dcc1eceebcdef02510f66856b2129ed0f00660b8d4bda280326d025a17837 |
|
MD5 | 90756b346f2193f8691743d7de083d87 |
|
BLAKE2b-256 | 1a5b82d6ee33ddd478685b8ab56e061688ba6dd5fc87aa7b207e651b72552e71 |