pytest-dev / pytest-asyncio

Asyncio support for pytest
https://pytest-asyncio.readthedocs.io
Apache License 2.0
1.43k stars 152 forks source link
asyncio pytest-plugin python testing

pytest-asyncio

.. image:: https://img.shields.io/pypi/v/pytest-asyncio.svg :target: https://pypi.python.org/pypi/pytest-asyncio .. image:: https://github.com/pytest-dev/pytest-asyncio/workflows/CI/badge.svg :target: https://github.com/pytest-dev/pytest-asyncio/actions?workflow=CI .. image:: https://codecov.io/gh/pytest-dev/pytest-asyncio/branch/main/graph/badge.svg :target: https://codecov.io/gh/pytest-dev/pytest-asyncio .. image:: https://img.shields.io/pypi/pyversions/pytest-asyncio.svg :target: https://github.com/pytest-dev/pytest-asyncio :alt: Supported Python versions .. image:: https://img.shields.io/badge/Matrix-%23pytest--asyncio-brightgreen :alt: Matrix chat room: #pytest-asyncio :target: https://matrix.to/#/#pytest-asyncio:matrix.org

pytest-asyncio <https://pytest-asyncio.readthedocs.io/en/latest/> is a pytest <https://docs.pytest.org/en/latest/contents.html> plugin. It facilitates testing of code that uses the asyncio <https://docs.python.org/3/library/asyncio.html>_ library.

Specifically, pytest-asyncio provides support for coroutines as test functions. This allows users to await code inside their tests. For example, the following code is executed as a test item by pytest:

.. code-block:: python

@pytest.mark.asyncio
async def test_some_asyncio_code():
    res = await library.do_something()
    assert b"expected result" == res

More details can be found in the documentation <https://pytest-asyncio.readthedocs.io/en/latest/>_.

Note that test classes subclassing the standard unittest <https://docs.python.org/3/library/unittest.html> library are not supported. Users are advised to use unittest.IsolatedAsyncioTestCase <https://docs.python.org/3/library/unittest.html#unittest.IsolatedAsyncioTestCase> or an async framework such as asynctest <https://asynctest.readthedocs.io/en/latest>__.

pytest-asyncio is available under the Apache License 2.0 <https://github.com/pytest-dev/pytest-asyncio/blob/main/LICENSE>_.

Installation

To install pytest-asyncio, simply:

.. code-block:: bash

$ pip install pytest-asyncio

This is enough for pytest to pick up pytest-asyncio.

Contributing

Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.