Run all your asynchronous tests cooperatively.
Use asyncio (cooperative multitasking) to run your I/O bound test suite efficiently and quickly.
import asyncio import pytest @pytest.mark.asyncio_cooperative async def test_a(): await asyncio.sleep(2) @pytest.mark.asyncio_cooperative async def test_b(): await asyncio.sleep(2)
========== 2 passed in 2.05 seconds ==========
pip install pytest-asyncio-cooperative
pytest-asyncio is NOT compatible with this plugin. Please uninstall pytest-asyncio or pass this flag to pytest -p no:asyncio
It’s recommended that async tests use async fixtures.
import asyncio import pytest @pytest.fixture async def my_fixture(): await asyncio.sleep(2) yield "XXX" await asyncio.sleep(2) @pytest.mark.asyncio_cooperative async def test_a(my_fixture): await asyncio.sleep(2) assert my_fixture == "XXX"
- Reduce the total run time of I/O bound test suites via cooperative multitasking
- Reduce system resource usage via cooperative multitasking
- An I/O bound test suite will run faster (ie. individual tests will take just as long. The total runtime of the entire test suite will be faster)
- An I/O bound test suite will use less system resources (ie. only a single thread is used)
- All tests MUST be coroutines (ie. have the async keyword)
- Order of tests is not guaranteed (ie. some blocking operations might taken longer and affect the order of test results)
- Tests MUST be isolated from each other (ie. NO shared resources, NO mock.patch)
- There is NO parallelism, CPU bound tests will NOT get a performance benefit
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size pytest-asyncio-cooperative-0.15.0.tar.gz (7.4 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for pytest-asyncio-cooperative-0.15.0.tar.gz