diff --git a/AUTHORS b/AUTHORS index 16a53d94b..d6004f33d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -125,6 +125,7 @@ Gene Wood George Kussumoto Georgy Dyuldin Gleb Nikonorov +Graeme Smecher Graham Horler Greg Price Gregory Lee diff --git a/changelog/8898.improvement.rst b/changelog/8898.improvement.rst new file mode 100644 index 000000000..d725157cf --- /dev/null +++ b/changelog/8898.improvement.rst @@ -0,0 +1 @@ +Complex numbers are now treated like floats and integers when generating parameterization IDs. diff --git a/src/_pytest/python.py b/src/_pytest/python.py index f7dfd696b..d6c14ea52 100644 --- a/src/_pytest/python.py +++ b/src/_pytest/python.py @@ -1334,7 +1334,7 @@ def _idval( if isinstance(val, STRING_TYPES): return _ascii_escaped_by_config(val, config) - elif val is None or isinstance(val, (float, int, bool)): + elif val is None or isinstance(val, (float, int, bool, complex)): return str(val) elif isinstance(val, REGEX_TYPE): return ascii_escaped(val.pattern) diff --git a/testing/python/metafunc.py b/testing/python/metafunc.py index 4a4b141c4..ccf9c1d9c 100644 --- a/testing/python/metafunc.py +++ b/testing/python/metafunc.py @@ -403,6 +403,7 @@ class TestMetafunc: pytest.param(tuple("eight"), (8, -8, 8)), pytest.param(b"\xc3\xb4", b"name"), pytest.param(b"\xc3\xb4", "other"), + pytest.param(1.0j, -2.0j), ], ) assert result == [ @@ -418,6 +419,7 @@ class TestMetafunc: "a9-b9", "\\xc3\\xb4-name", "\\xc3\\xb4-other", + "1j-(-0-2j)", ] def test_idmaker_non_printable_characters(self) -> None: