diff --git a/_pytest/python.py b/_pytest/python.py index 20c6a4de6..aa80c8640 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -1133,7 +1133,7 @@ else: return val.encode('unicode-escape') -def _idval(val, argname, idx, idfn, config): +def _idval(val, argname, idx, idfn, config=None): if idfn: try: s = idfn(val) @@ -1159,7 +1159,7 @@ def _idval(val, argname, idx, idfn, config): return val.__name__ return str(argname)+str(idx) -def _idvalset(idx, valset, argnames, idfn, ids, config): +def _idvalset(idx, valset, argnames, idfn, ids, config=None): if ids is None or ids[idx] is None: this_id = [_idval(val, argname, idx, idfn, config) for val, argname in zip(valset, argnames)] diff --git a/testing/python/metafunc.py b/testing/python/metafunc.py index 6ae3ca43f..28b3e0d64 100644 --- a/testing/python/metafunc.py +++ b/testing/python/metafunc.py @@ -1156,3 +1156,21 @@ class TestMarkersWithParametrization: """) reprec = testdir.inline_run() reprec.assertoutcome(passed=2) + + def test_pytest_make_parametrize_id(self, testdir): + testdir.makeconftest(""" + def pytest_make_parametrize_id(val): + return str(val * 2) + """) + testdir.makepyfile(""" + import pytest + + @pytest.mark.parametrize("x", range(2)) + def test_func(x): + pass + """) + result = testdir.runpytest("-v") + result.stdout.fnmatch_lines([ + "*test_func*0*PASS*", + "*test_func*2*PASS*", + ])