diff --git a/src/_pytest/recwarn.py b/src/_pytest/recwarn.py index e89fecd12..ec91bc484 100644 --- a/src/_pytest/recwarn.py +++ b/src/_pytest/recwarn.py @@ -42,13 +42,11 @@ def recwarn() -> Generator["WarningsRecorder", None, None]: @overload def deprecated_call( *, match: Optional[Union[str, Pattern[str]]] = ... -) -> "WarningsRecorder": - ... +) -> "WarningsRecorder": ... @overload -def deprecated_call(func: Callable[..., T], *args: Any, **kwargs: Any) -> T: - ... +def deprecated_call(func: Callable[..., T], *args: Any, **kwargs: Any) -> T: ... def deprecated_call( @@ -90,8 +88,7 @@ def warns( expected_warning: Union[Type[Warning], Tuple[Type[Warning], ...]] = ..., *, match: Optional[Union[str, Pattern[str]]] = ..., -) -> "WarningsChecker": - ... +) -> "WarningsChecker": ... @overload @@ -100,8 +97,7 @@ def warns( func: Callable[..., T], *args: Any, **kwargs: Any, -) -> T: - ... +) -> T: ... def warns( @@ -336,7 +332,9 @@ class WarningsChecker(WarningsRecorder): @staticmethod def _validate_message(wrn: Any) -> None: - if not isinstance(msg := wrn.message.args[0], str): + if type(wrn.message) is UserWarning and not isinstance( + msg := wrn.message.args[0], str + ): raise TypeError( f"Warning message must be str, got {msg!r} (type {type(msg).__name__})" )