-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Closed
Labels
topic: parametrizerelated to @pytest.mark.parametrizerelated to @pytest.mark.parametrizetype: bugproblem that needs to be addressedproblem that needs to be addressedtype: regressionindicates a problem that was introduced in a release which was working previouslyindicates a problem that was introduced in a release which was working previously
Description
import pytest
def id_gen(dct):
return dct['k']
@pytest.mark.parametrize(
'f',
({'k': {'val': 'val'}}, {'k': {'val2', 'val2'}}),
ids=id_gen,
)
def test(f):
assert f
$ pytest t.py
============================= test session starts ==============================
platform linux -- Python 3.6.7, pytest-4.2.0, py-1.7.0, pluggy-0.8.1
rootdir: /tmp/x, inifile:
collected 0 items / 1 errors
==================================== ERRORS ====================================
____________________________ ERROR collecting t.py _____________________________
venv/lib/python3.6/site-packages/pluggy/hooks.py:284: in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
venv/lib/python3.6/site-packages/pluggy/manager.py:68: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
venv/lib/python3.6/site-packages/pluggy/manager.py:62: in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
venv/lib/python3.6/site-packages/_pytest/python.py:226: in pytest_pycollect_makeitem
res = list(collector._genfunctions(name, obj))
venv/lib/python3.6/site-packages/_pytest/python.py:403: in _genfunctions
self.ihook.pytest_generate_tests(metafunc=metafunc)
venv/lib/python3.6/site-packages/pluggy/hooks.py:284: in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
venv/lib/python3.6/site-packages/pluggy/manager.py:68: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
venv/lib/python3.6/site-packages/pluggy/manager.py:62: in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
venv/lib/python3.6/site-packages/_pytest/python.py:133: in pytest_generate_tests
metafunc.parametrize(*marker.args, **marker.kwargs)
venv/lib/python3.6/site-packages/_pytest/python.py:996: in parametrize
ids = self._resolve_arg_ids(argnames, ids, parameters, item=self.definition)
venv/lib/python3.6/site-packages/_pytest/python.py:1050: in _resolve_arg_ids
ids = idmaker(argnames, parameters, idfn, ids, self.config, item=item)
venv/lib/python3.6/site-packages/_pytest/python.py:1196: in idmaker
for valindex, parameterset in enumerate(parametersets)
venv/lib/python3.6/site-packages/_pytest/python.py:1196: in <listcomp>
for valindex, parameterset in enumerate(parametersets)
venv/lib/python3.6/site-packages/_pytest/python.py:1186: in _idvalset
for val, argname in zip(parameterset.values, argnames)
venv/lib/python3.6/site-packages/_pytest/python.py:1186: in <listcomp>
for val, argname in zip(parameterset.values, argnames)
venv/lib/python3.6/site-packages/_pytest/python.py:1158: in _idval
return ascii_escaped(s)
venv/lib/python3.6/site-packages/_pytest/compat.py:239: in ascii_escaped
ret = val.encode("unicode_escape").decode("ascii")
E AttributeError: 'dict' object has no attribute 'encode'
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.17 seconds ============================
This apparently used to work in 3.0.7:
$ pytest t.py -vvv
============================= test session starts ==============================
platform linux -- Python 3.6.7, pytest-3.0.7, py-1.7.0, pluggy-0.4.0 -- /tmp/x/venv/bin/python3
cachedir: .cache
rootdir: /tmp/x, inifile:
collected 2 items
t.py::test[f0] PASSED
t.py::test[f1] PASSED
=========================== 2 passed in 0.00 seconds ===========================
Metadata
Metadata
Assignees
Labels
topic: parametrizerelated to @pytest.mark.parametrizerelated to @pytest.mark.parametrizetype: bugproblem that needs to be addressedproblem that needs to be addressedtype: regressionindicates a problem that was introduced in a release which was working previouslyindicates a problem that was introduced in a release which was working previously