diff --git a/_pytest/deprecated.py b/_pytest/deprecated.py index c5aedd0c9cf..1eeb74918ed 100644 --- a/_pytest/deprecated.py +++ b/_pytest/deprecated.py @@ -30,4 +30,10 @@ class RemovedInPytest4Warning(DeprecationWarning): MARK_INFO_ATTRIBUTE = RemovedInPytest4Warning( "MarkInfo objects are deprecated as they contain the merged marks" +) + +MARK_PARAMETERSET_UNPACKING = RemovedInPytest4Warning( + "Applying marks directly to parameters is deprecated," + " please use pytest.param(..., marks=...) instead.\n" + "For more details, see: https://docs.pytest.org/en/latest/parametrize.html" ) \ No newline at end of file diff --git a/_pytest/mark.py b/_pytest/mark.py index 11f1e30d600..961c3c40971 100644 --- a/_pytest/mark.py +++ b/_pytest/mark.py @@ -6,7 +6,7 @@ from collections import namedtuple from operator import attrgetter from .compat import imap -from .deprecated import MARK_INFO_ATTRIBUTE +from .deprecated import MARK_INFO_ATTRIBUTE, MARK_PARAMETERSET_UNPACKING def alias(name, warning=None): getter = attrgetter(name) @@ -61,6 +61,9 @@ def extract_from(cls, parameterset, legacy_force_tuple=False): if legacy_force_tuple: argval = argval, + if newmarks: + warnings.warn(MARK_PARAMETERSET_UNPACKING) + return cls(argval, marks=newmarks, id=None) @property diff --git a/changelog/2427.removal b/changelog/2427.removal new file mode 100644 index 00000000000..c7ed8e17a7a --- /dev/null +++ b/changelog/2427.removal @@ -0,0 +1 @@ +introduce deprecation warnings for legacy marks based parametersets