pytest-asyncio
pytest-asyncio copied to clipboard
Parametrizing `event_loop_policy` parametrizes all tests
Contrary to the statements in the documentation (here and here), the fixture is not only applied to all pytest-asyncio tests, but also applied to all other tests.
import asyncio
import pytest
import uvloop
@pytest.fixture(
scope="session",
params=(asyncio.get_event_loop_policy(), uvloop.EventLoopPolicy()),
ids=("asyncio", "uvloop"),
)
def event_loop_policy(request):
return request.param
@pytest.mark.asyncio
async def test_async():
pass
def test_sync():
pass
Output:
plugins: asyncio-0.23.5
asyncio: mode=Mode.STRICT
collected 4 items
test_event_loop_policy.py::test_async[asyncio] PASSED [ 25%]
test_event_loop_policy.py::test_sync[asyncio] PASSED [ 50%]
test_event_loop_policy.py::test_async[uvloop] PASSED [ 75%]
test_event_loop_policy.py::test_sync[uvloop] PASSED [100%]