Skip to content

Commit

Permalink
[refactor] Run parametrized loop test inside Pytester to prevent the …
Browse files Browse the repository at this point in the history
…event loop implementation from polluting the test environment.

Signed-off-by: Michael Seifert <m.seifert@digitalernachschub.de>
  • Loading branch information
seifertm committed Oct 3, 2023
1 parent 009648a commit 044358b
Showing 1 changed file with 36 additions and 21 deletions.
57 changes: 36 additions & 21 deletions tests/async_fixtures/test_parametrized_loop.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,46 @@
import asyncio
from textwrap import dedent

import pytest
from pytest import Pytester

TESTS_COUNT = 0

def test_event_loop_parametrization(pytester: Pytester):
pytester.makepyfile(
dedent(
"""\
import asyncio
def teardown_module():
# parametrized 2 * 2 times: 2 for 'event_loop' and 2 for 'fix'
assert TESTS_COUNT == 4
import pytest
import pytest_asyncio
TESTS_COUNT = 0
@pytest.fixture(scope="module", params=[1, 2])
def event_loop(request):
request.param
loop = asyncio.new_event_loop()
yield loop
loop.close()
def teardown_module():
# parametrized 2 * 2 times: 2 for 'event_loop' and 2 for 'fix'
assert TESTS_COUNT == 4
@pytest.fixture(params=["a", "b"])
async def fix(request):
await asyncio.sleep(0)
return request.param
@pytest.fixture(scope="module", params=[1, 2])
def event_loop(request):
request.param
loop = asyncio.new_event_loop()
yield loop
loop.close()
@pytest.mark.asyncio
async def test_parametrized_loop(fix):
await asyncio.sleep(0)
global TESTS_COUNT
TESTS_COUNT += 1
@pytest_asyncio.fixture(params=["a", "b"])
async def fix(request):
await asyncio.sleep(0)
return request.param
@pytest.mark.asyncio
async def test_parametrized_loop(fix):
await asyncio.sleep(0)
global TESTS_COUNT
TESTS_COUNT += 1
"""
)
)
result = pytester.runpytest_subprocess("--asyncio-mode=strict")
result.assert_outcomes(passed=4)

0 comments on commit 044358b

Please sign in to comment.