fix issue 251 - report a skip instead of ignoring classes with init
This commit is contained in:
parent
aeba66ac6a
commit
0dd05023b8
|
@ -1,5 +1,6 @@
|
||||||
Changes between 2.3.4 and 2.3.5dev
|
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
|
- issue250 unicode/str mixes in parametrization names and values now works
|
||||||
|
|
||||||
|
|
|
@ -175,9 +175,8 @@ def pytest_pycollect_makeitem(__multicall__, collector, name, obj):
|
||||||
#if hasattr(collector.obj, 'unittest'):
|
#if hasattr(collector.obj, 'unittest'):
|
||||||
# return # we assume it's a mixin class for a TestCase derived one
|
# return # we assume it's a mixin class for a TestCase derived one
|
||||||
if collector.classnamefilter(name):
|
if collector.classnamefilter(name):
|
||||||
if not hasinit(obj):
|
Class = collector._getcustomclass("Class")
|
||||||
Class = collector._getcustomclass("Class")
|
return Class(name, parent=collector)
|
||||||
return Class(name, parent=collector)
|
|
||||||
elif collector.funcnamefilter(name) and hasattr(obj, '__call__'):
|
elif collector.funcnamefilter(name) and hasattr(obj, '__call__'):
|
||||||
if is_generator(obj):
|
if is_generator(obj):
|
||||||
return Generator(name, parent=collector)
|
return Generator(name, parent=collector)
|
||||||
|
@ -394,6 +393,11 @@ class Module(pytest.File, PyCollector):
|
||||||
class Class(PyCollector):
|
class Class(PyCollector):
|
||||||
""" Collector for test methods. """
|
""" Collector for test methods. """
|
||||||
def collect(self):
|
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)]
|
return [self._getcustomclass("Instance")(name="()", parent=self)]
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
|
|
|
@ -35,7 +35,7 @@ class TestModule:
|
||||||
pytest.raises(ImportError, "modcol.obj")
|
pytest.raises(ImportError, "modcol.obj")
|
||||||
|
|
||||||
class TestClass:
|
class TestClass:
|
||||||
def test_class_with_init_not_collected(self, testdir):
|
def test_class_with_init_skip_collect(self, testdir):
|
||||||
modcol = testdir.getmodulecol("""
|
modcol = testdir.getmodulecol("""
|
||||||
class TestClass1:
|
class TestClass1:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -45,7 +45,10 @@ class TestClass:
|
||||||
pass
|
pass
|
||||||
""")
|
""")
|
||||||
l = modcol.collect()
|
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):
|
def test_class_subclassobject(self, testdir):
|
||||||
testdir.getmodulecol("""
|
testdir.getmodulecol("""
|
||||||
|
|
Loading…
Reference in New Issue