Merge pull request #6152 from grlee77/module_name_in_id
use __name__ attribute in the parametrize id for modules as well
This commit is contained in:
commit
245e1f10e5
1
AUTHORS
1
AUTHORS
|
@ -103,6 +103,7 @@ George Kussumoto
|
|||
Georgy Dyuldin
|
||||
Graham Horler
|
||||
Greg Price
|
||||
Gregory Lee
|
||||
Grig Gheorghiu
|
||||
Grigorii Eremeev (budulianin)
|
||||
Guido Wesdorp
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Now parametrization will use the ``__name__`` attribute of any object for the id, if present. Previously it would only use ``__name__`` for functions and classes.
|
|
@ -1162,7 +1162,8 @@ def _idval(val, argname, idx, idfn, item, config):
|
|||
return ascii_escaped(val.pattern)
|
||||
elif isinstance(val, enum.Enum):
|
||||
return str(val)
|
||||
elif (inspect.isclass(val) or inspect.isfunction(val)) and hasattr(val, "__name__"):
|
||||
elif hasattr(val, "__name__") and isinstance(val.__name__, str):
|
||||
# name of a class, function, module, etc.
|
||||
return val.__name__
|
||||
return str(argname) + str(idx)
|
||||
|
||||
|
|
|
@ -314,6 +314,21 @@ def test_keyword_option_parametrize(spec, testdir):
|
|||
assert list(passed) == list(passed_result)
|
||||
|
||||
|
||||
def test_parametrize_with_module(testdir):
|
||||
testdir.makepyfile(
|
||||
"""
|
||||
import pytest
|
||||
@pytest.mark.parametrize("arg", [pytest,])
|
||||
def test_func(arg):
|
||||
pass
|
||||
"""
|
||||
)
|
||||
rec = testdir.inline_run()
|
||||
passed, skipped, fail = rec.listoutcomes()
|
||||
expected_id = "test_func[" + pytest.__name__ + "]"
|
||||
assert passed[0].nodeid.split("::")[-1] == expected_id
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"spec",
|
||||
[
|
||||
|
|
Loading…
Reference in New Issue