Added a check to parameterized which raises a ValueError when the input iterable is empty, this is probably due to some programmer error and means that no tests are run when this was probably not intended
diff --git a/parameterized/parameterized.py b/parameterized/parameterized.py index 1d83404..96843f2 100644 --- a/parameterized/parameterized.py +++ b/parameterized/parameterized.py
@@ -320,9 +320,15 @@ if test_self is not None: delattr(test_cls, test_func.__name__) wrapper.__doc__ = original_doc + wrapper.parameterized_input = self.get_input() + + if not wrapper.parameterized_input: + raise ValueError('Parameters iterable was empty') + wrapper.parameterized_func = test_func test_func.__name__ = "_parameterized_original_%s" %(test_func.__name__, ) + return wrapper def param_as_nose_tuple(self, test_self, func, num, p):
diff --git a/parameterized/test.py b/parameterized/test.py index d5bcd8f..ef6bf03 100644 --- a/parameterized/test.py +++ b/parameterized/test.py
@@ -214,6 +214,16 @@ else: raise AssertionError("Expected exception not raised") + +def test_helpful_error_on_empty_iterable_input(): + try: + parameterized([])(lambda: None) + except ValueError as e: + assert_contains(str(e), "Parameters iterable was empty") + else: + raise AssertionError("Expected exception not raised") + + expect("generator", [ "test_wrapped_iterable_input('foo')", ])