Skip to content

Commit 92d6a05

Browse files
authored
Show a better message when 'request' is used in parametrize (#6184)
Show a better message when 'request' is used in parametrize
2 parents 55a58bc + 6f2c0fd commit 92d6a05

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

changelog/6183.bugfix.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Using ``request`` as a parameter name in ``@pytest.mark.parametrize`` now produces a more
2+
user-friendly error.

src/_pytest/python.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -977,6 +977,12 @@ def parametrize(self, argnames, argvalues, indirect=False, ids=None, scope=None)
977977
)
978978
del argvalues
979979

980+
if "request" in argnames:
981+
fail(
982+
"'request' is a reserved name and cannot be used in @pytest.mark.parametrize",
983+
pytrace=False,
984+
)
985+
980986
if scope is None:
981987
scope = _find_parametrized_scope(argnames, self._arg2fixturedefs, indirect)
982988

testing/python/metafunc.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,19 @@ def func(x):
7272
):
7373
metafunc.parametrize("x", [1], scope="doggy")
7474

75+
def test_parametrize_request_name(self, testdir):
76+
"""Show proper error when 'request' is used as a parameter name in parametrize (#6183)"""
77+
78+
def func(request):
79+
raise NotImplementedError()
80+
81+
metafunc = self.Metafunc(func)
82+
with pytest.raises(
83+
pytest.fail.Exception,
84+
match=r"'request' is a reserved name and cannot be used in @pytest.mark.parametrize",
85+
):
86+
metafunc.parametrize("request", [1])
87+
7588
def test_find_parametrized_scope(self):
7689
"""unittest for _find_parametrized_scope (#3941)"""
7790
from _pytest.python import _find_parametrized_scope

0 commit comments

Comments
 (0)