diff --git a/CHANGELOG b/CHANGELOG index f3a326316..af5bbf7db 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ Changes between 2.3.4 and 2.3.5dev ----------------------------------- +- issue 251 - report a skip instead of ignoring classes with init - issue250 unicode/str mixes in parametrization names and values now works diff --git a/_pytest/python.py b/_pytest/python.py index a18b80bc1..22f61aec0 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -175,9 +175,8 @@ def pytest_pycollect_makeitem(__multicall__, collector, name, obj): #if hasattr(collector.obj, 'unittest'): # return # we assume it's a mixin class for a TestCase derived one if collector.classnamefilter(name): - if not hasinit(obj): - Class = collector._getcustomclass("Class") - return Class(name, parent=collector) + Class = collector._getcustomclass("Class") + return Class(name, parent=collector) elif collector.funcnamefilter(name) and hasattr(obj, '__call__'): if is_generator(obj): return Generator(name, parent=collector) @@ -394,6 +393,11 @@ class Module(pytest.File, PyCollector): class Class(PyCollector): """ Collector for test methods. """ def collect(self): + if hasinit(self.obj): + pytest.skip("class %s.%s with __init__ won't get collected" % ( + self.obj.__module__, + self.obj.__name__, + )) return [self._getcustomclass("Instance")(name="()", parent=self)] def setup(self): diff --git a/testing/python/collect.py b/testing/python/collect.py index 5f1de8830..906999f89 100644 --- a/testing/python/collect.py +++ b/testing/python/collect.py @@ -35,7 +35,7 @@ class TestModule: pytest.raises(ImportError, "modcol.obj") class TestClass: - def test_class_with_init_not_collected(self, testdir): + def test_class_with_init_skip_collect(self, testdir): modcol = testdir.getmodulecol(""" class TestClass1: def __init__(self): @@ -45,7 +45,10 @@ class TestClass: pass """) l = modcol.collect() - assert len(l) == 0 + assert len(l) == 2 + + for classcol in l: + pytest.raises(pytest.skip.Exception, classcol.collect) def test_class_subclassobject(self, testdir): testdir.getmodulecol("""