Metadata-Version: 1.2
Name: pytest-asyncio-cooperative
Version: 0.16.0
Summary: Run all your asynchronous tests cooperatively.
Home-page: https://github.com/willemt/pytest-asyncio-cooperative
Author: Willem Thiart
Author-email: himself@willemthiart.com
Maintainer: Willem Thiart
Maintainer-email: himself@willemthiart.com
License: MIT
Description: .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
            :target: https://github.com/psf/black
        
        Use asyncio (cooperative multitasking) to run your I/O bound test suite efficiently and quickly.
        
        .. code-block:: python
           :class: ignore
           
           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)
        
        
        .. code-block:: bash
           :class: ignore
        
           ========== 2 passed in 2.05 seconds ==========
        
        
        Quickstart
        ----------
        .. code-block:: bash
           :class: ignore
        
           pip install pytest-asyncio-cooperative
        
        
        Compatibility
        -------------
        pytest-asyncio is NOT compatible with this plugin. Please uninstall pytest-asyncio or pass this flag to pytest `-p no:asyncio`
        
        Fixtures
        --------
        It's recommended that async tests use async fixtures.
        
        .. code-block:: bash
           :class: ignore
        
           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"
        
        
        Goals
        -----
        
        - Reduce the total run time of I/O bound test suites via cooperative multitasking
        
        - Reduce system resource usage via cooperative multitasking
        
        
        Pros
        ----
        
        - 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)
        
        Cons
        ----
        
        - 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
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Pytest
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Testing
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.7
