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')",
])