Update conftest.py to refactor autouse pytest.skip() fixtures into pytest_runtest_setup() (#7173)

This commit is contained in:
DenisC 2025-12-11 03:48:25 -05:00 committed by GitHub
parent 6ba6b032ad
commit 1a3e343dc4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 27 additions and 61 deletions

View File

@ -1,5 +1,6 @@
from __future__ import annotations
import importlib
from pathlib import Path
from typing import TYPE_CHECKING
@ -66,67 +67,6 @@ def reactor_pytest(request) -> str:
return request.config.getoption("--reactor")
@pytest.fixture(autouse=True)
def only_asyncio(request, reactor_pytest):
if request.node.get_closest_marker("only_asyncio") and reactor_pytest != "asyncio":
pytest.skip("This test is only run with --reactor=asyncio")
@pytest.fixture(autouse=True)
def only_not_asyncio(request, reactor_pytest):
if (
request.node.get_closest_marker("only_not_asyncio")
and reactor_pytest == "asyncio"
):
pytest.skip("This test is only run without --reactor=asyncio")
@pytest.fixture(autouse=True)
def requires_uvloop(request):
if not request.node.get_closest_marker("requires_uvloop"):
return
try:
import uvloop # noqa: PLC0415
del uvloop
except ImportError:
pytest.skip("uvloop is not installed")
@pytest.fixture(autouse=True)
def requires_botocore(request):
if not request.node.get_closest_marker("requires_botocore"):
return
try:
import botocore # noqa: PLC0415
del botocore
except ImportError:
pytest.skip("botocore is not installed")
@pytest.fixture(autouse=True)
def requires_boto3(request):
if not request.node.get_closest_marker("requires_boto3"):
return
try:
import boto3 # noqa: PLC0415
del boto3
except ImportError:
pytest.skip("boto3 is not installed")
@pytest.fixture(autouse=True)
def requires_mitmproxy(request):
if not request.node.get_closest_marker("requires_mitmproxy"):
return
try:
import mitmproxy # noqa: F401, PLC0415
except ImportError:
pytest.skip("mitmproxy is not installed")
def pytest_configure(config):
if config.getoption("--reactor") == "asyncio":
# Needed on Windows to switch from proactor to selector for Twisted reactor compatibility.
@ -134,5 +74,31 @@ def pytest_configure(config):
set_asyncio_event_loop_policy()
def pytest_runtest_setup(item):
# Skip tests based on reactor markers
reactor = item.config.getoption("--reactor")
if item.get_closest_marker("only_asyncio") and reactor != "asyncio":
pytest.skip("This test is only run with --reactor=asyncio")
if item.get_closest_marker("only_not_asyncio") and reactor == "asyncio":
pytest.skip("This test is only run without --reactor=asyncio")
# Skip tests requiring optional dependencies
optional_deps = [
"uvloop",
"botocore",
"boto3",
"mitmproxy",
]
for module in optional_deps:
if item.get_closest_marker(f"requires_{module}"):
try:
importlib.import_module(module)
except ImportError:
pytest.skip(f"{module} is not installed")
# Generate localhost certificate files, needed by some tests
generate_keys()