pytest-asyncio icon indicating copy to clipboard operation
pytest-asyncio copied to clipboard

Parametrizing `event_loop_policy` parametrizes all tests

Open aceg1k opened this issue 11 months ago • 1 comments

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%]

aceg1k avatar Mar 06 '24 06:03 aceg1k