From 12909c1877f8c991def3b216d9fbd9d587558cf6 Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 5 May 2025 20:00:37 +0200 Subject: [PATCH] Update clear_exception_traceback fixture --- tests/conftest.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 9ae8a9eab56..d59a9957ccb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -21,6 +21,7 @@ import threading from typing import TYPE_CHECKING, Any, cast from unittest.mock import AsyncMock, MagicMock, Mock, _patch, patch +import _pytest.python_api from aiohttp import client, web_app from aiohttp.resolver import AsyncResolver from aiohttp.test_utils import ( @@ -355,22 +356,33 @@ def caplog_fixture(caplog: pytest.LogCaptureFixture) -> pytest.LogCaptureFixture @pytest.fixture(autouse=True) def clear_exception_traceback(request: pytest.FixtureRequest) -> Generator[None]: """Clear exception traceback after each test.""" - exceptions = [] + exceptions: list[BaseException] = [] + raises_ctx: list[_pytest.python_api.RaisesContext] = [] for fixture_name in request.fixturenames: if fixture_name not in ( + "doorbell_state_side_effect", "error", "exc", "exception", + "expected_result", + "raises", + "side_eff", "side_effect", "sideeffect", ): continue if isinstance(request.getfixturevalue(fixture_name), BaseException): exceptions.append(request.getfixturevalue(fixture_name)) + if isinstance( + request.getfixturevalue(fixture_name), _pytest.python_api.RaisesContext + ): + raises_ctx.append(request.getfixturevalue(fixture_name)) yield for ex in exceptions: ex.__traceback__ = None + for ctx in raises_ctx: + ctx.excinfo = None @pytest.fixture(autouse=True, scope="module")