Skip to content

Commit

Permalink
[docs] Added how-to guide for testing with multiple loops.
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Seifert <m.seifert@digitalernachschub.de>
  • Loading branch information
seifertm committed Nov 8, 2023
1 parent 25343df commit c064c33
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/source/how-to-guides/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ How-To Guides
.. toctree::
:hidden:

multiple_loops
uvloop

This section of the documentation provides code snippets and recipes to accomplish specific tasks with pytest-asyncio.
10 changes: 10 additions & 0 deletions docs/source/how-to-guides/multiple_loops.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
======================================
How to test with different event loops
======================================

Parametrizing the *event_loop_policy* fixture parametrizes all async tests. The following example causes all async tests to run multiple times, once for each event loop in the fixture parameters:

.. include:: multiple_loops_example.py
:code: python

You may choose to limit the scope of the fixture to *package,* *module,* or *class,* if you only want a subset of your tests to run with different event loops.
24 changes: 24 additions & 0 deletions docs/source/how-to-guides/multiple_loops_example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import asyncio
from asyncio import DefaultEventLoopPolicy

import pytest


class CustomEventLoopPolicy(DefaultEventLoopPolicy):
pass


@pytest.fixture(
scope="session",
params=(
CustomEventLoopPolicy(),
CustomEventLoopPolicy(),
),
)
def event_loop_policy(request):
return request.param


@pytest.mark.asyncio
async def test_uses_custom_event_loop_policy():
assert isinstance(asyncio.get_event_loop_policy(), CustomEventLoopPolicy)

0 comments on commit c064c33

Please sign in to comment.