naming.py 685 Bytes
import pytest


def trans(x):
    return str(x)


def apply_names(func, args, tests, noparens=False):
    cases = []
    for case in tests:
        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 noparens)
                + ((", " + extra) if extra else "")
            )
        )
    return cases