Как я могу заставить плагины Pytester повторно использовать? ⇐ Python

Программы на Python
Anonymous
Как я могу заставить плагины Pytester повторно использовать?

Сообщение Anonymous »

Я пытаюсь протестировать фикстуры, настроенные в моем тестовом репозитории, с помощью PyTest 7.3.1 и Python3.8.
В этом случае у меня есть фикстуры, которые используют Плагин 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_fixture1, test_fixture2 возвращает предупреждение, что приспособление2 никогда не ожидалось.
Когда сначала тестируется test_fixture2, test_fixture1 не может разрешить приспособление цикла событий.
В обоих случаях это признак того, что pytester не может использовать плагин pytest-asyncio.
Я пробовал явно добавить плагин в вызов runpytest, но это мало что дает pytester среде, чтобы распознать наличие плагина.
Любые мысли или советы помогут.

Подробнее здесь: https://stackoverflow.com/questions/788 ... se-plugins

Вернуться в «Python»