diff --git a/tests/helpers/naming.py b/tests/helpers/naming.py
new file mode 100644
index 0000000000000000000000000000000000000000..3fa5fcf2290d58611d3e4a17ecba1934cd945747
--- /dev/null
+++ b/tests/helpers/naming.py
@@ -0,0 +1,18 @@
+import pytest
+from collections.abc import Iterable
+
+def trans(x):
+    return str(x)
+
+def apply_names(func, args, tests, noparens=False):
+    cases = []
+    for case in tests:
+        if not isinstance(case, Iterable):
+            case = [case]
+        extra = ", ".join(args[i] + trans(x) for i, x in enumerate(case) if (args[i] is not True and args[i] is not False))
+        cases.append(
+            pytest.param(
+                *case, id=func + ("(" if not noparens else "") + ", ".join(trans(x) for i, x in enumerate(case) if args[i] is True) + (")" if not noparens else "" if noparens is True else noparens) + (((", " if noparens is not True else "") + extra) if extra else "")
+            )
+        )
+    return cases