fix issue 251 - report a skip instead of ignoring classes with init

This commit is contained in:
Ronny Pfannschmidt 2013-02-15 10:18:00 +01:00
parent aeba66ac6a
commit 0dd05023b8
3 changed files with 13 additions and 5 deletions

View File

@ -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

View File

@ -175,7 +175,6 @@ 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)
elif collector.funcnamefilter(name) and hasattr(obj, '__call__'):
@ -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):

View File

@ -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("""