From c6d1c7f80e3a47159202c8ce86aba233d2a1c5d3 Mon Sep 17 00:00:00 2001 From: ferkans-amir Date: Tue, 28 Jul 2026 10:23:10 +0200 Subject: [PATCH 1/2] fix(mark): handle non-tuple non-list values in ParameterSet.extract_from --- src/_pytest/mark/structures.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/_pytest/mark/structures.py b/src/_pytest/mark/structures.py index 5449b17a1c6..488ceebc0a2 100644 --- a/src/_pytest/mark/structures.py +++ b/src/_pytest/mark/structures.py @@ -154,13 +154,10 @@ def extract_from( return parameterset if force_tuple: return cls.param(parameterset) + elif isinstance(parameterset, (tuple, list)): + return cls(parameterset, marks=[], id=None) else: - # TODO: Refactor to fix this type-ignore. Currently the following - # passes type-checking but crashes: - # - # @pytest.mark.parametrize(('x', 'y'), [1, 2]) - # def test_foo(x, y): pass - return cls(parameterset, marks=[], id=None) # type: ignore[arg-type] + return cls((parameterset,), marks=[], id=None) @staticmethod def _parse_parametrize_args( From 6eac83839c2f465d8b281d3de821bb2703f8cecd Mon Sep 17 00:00:00 2001 From: ferkans-amir Date: Tue, 28 Jul 2026 15:27:40 +0200 Subject: [PATCH 2/2] changelog: add newsfragment for #14795 --- changelog/14795.bugfix.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/14795.bugfix.rst diff --git a/changelog/14795.bugfix.rst b/changelog/14795.bugfix.rst new file mode 100644 index 00000000000..337e6727655 --- /dev/null +++ b/changelog/14795.bugfix.rst @@ -0,0 +1 @@ +Handle non-tuple and non-list parameter items cleanly in :meth:`ParameterSet.extract_from` when single parameter names use trailing commas in :func:`pytest.mark.parametrize`.