import pytest import asyncio import uvloop import aiotask_context as context @pytest.fixture() def asyncio_loop(): asyncio.set_event_loop_policy(None) loop = asyncio.get_event_loop() yield loop loop.close() # restore the virgin state asyncio.set_event_loop_policy(None) @pytest.fixture() def uvloop_loop(): asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) loop = asyncio.get_event_loop() yield loop loop.close() # restore the virgin state asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) @pytest.fixture(params=[ 'asyncio_loop', 'uvloop_loop' ]) def event_loop(request): return request.getfixturevalue(request.param) @pytest.fixture(autouse=True) def context_loop(event_loop): event_loop.set_task_factory(context.task_factory)