В этом случае у меня есть фикстуры, которые используют Плагин pytest-asyncio. А тестовые функции определены в отдельных модулях.
Первый тест может пройти успешно, но второй тест не может подключиться к плагину во второй раз. Это независимо от порядка испытаний; второй тест всегда не использует плагин.
Я понимаю, что каждый новый тест, выполняемый pytester, делает недействительным кеш импорта перед запуском теста, но я не думаю, что это проблема. .
Код: Выделить всё
conftest.py
from pytest import fixture
@fixture(scope="session")
def fixture1(
event_loop, # Fixture implicit to the pytest_asyncio plugin
):
return event_loop
@fixture(scope="session", autouse=True)
async def fixture2():
pass
Код: Выделить всё
tests/.../test_fixture1.py
def test_fixture1(pytester):
pytester.makepyfile(
"""
from conftest import fixture1
def test_simple(event_loop, fixture1):
assert event_loop is fixture1
"""
)
result = pytester.runpytest()
tests/.../test_fixture2.py
def test_fixture2(pytester):
pytester.makepyfile(
"""
from conftest import fixture2
def test_simple():
pass
"""
)
result = pytester.runpytest()
Когда сначала тестируется test_fixture2, test_fixture1 не может разрешить приспособление цикла событий.
В обоих случаях это признак того, что pytester не может использовать плагин pytest-asyncio.
Я пробовал явно добавить плагин в вызов runpytest, но это мало что дает pytester среде, чтобы распознать наличие плагина.
Любые мысли или советы помогут.
Подробнее здесь: https://stackoverflow.com/questions/788 ... se-plugins