diff --git a/parameterized/parameterized.py b/parameterized/parameterized.py index 969a157..6e3feb2 100644 --- a/parameterized/parameterized.py +++ b/parameterized/parameterized.py @@ -549,6 +549,26 @@ def standalone_func(*a): @classmethod def to_safe_name(cls, s): return str(re.sub("[^a-zA-Z0-9_]+", "_", s)) + + @classmethod + def subtest(cls, params): + """ + @parameterized.subTests(...) + def test_foo(self): + ... + -> + def test_foo(self): + for param in ...: + with self.subTest(param): + ... + """ + def decorator(func): + def wrapper(self, *args, **kwargs): + for p in cls.input_as_callable(params)(): + with self.subTest(p): + func(*((self,) + p.args), **p.kwargs) + return wrapper + return decorator def parameterized_class(attrs, input_values=None, class_name_func=None, classname_func=None):