strip bound wrappers of class setup/tardown, fixes #140

on python3 im_func is replaced by __func__
This commit is contained in:
Ronny Pfannschmidt 2012-05-06 23:03:16 +02:00
parent fe1c35f8d0
commit 0e3779b14f
2 changed files with 20 additions and 0 deletions

View File

@ -311,12 +311,14 @@ class Class(PyCollectorMixin, pytest.Collector):
setup_class = getattr(self.obj, 'setup_class', None)
if setup_class is not None:
setup_class = getattr(setup_class, 'im_func', setup_class)
setup_class = getattr(setup_class, '__func__', setup_class)
setup_class(self.obj)
def teardown(self):
teardown_class = getattr(self.obj, 'teardown_class', None)
if teardown_class is not None:
teardown_class = getattr(teardown_class, 'im_func', teardown_class)
teardown_class = getattr(teardown_class, '__func__', teardown_class)
teardown_class(self.obj)
class Instance(PyCollectorMixin, pytest.Collector):

View File

@ -56,6 +56,24 @@ class TestClass:
"*collected 0*",
])
def test_setup_teardown_class_as_classmethod(self, testdir):
testdir.makepyfile("""
class TestClassMethod:
@classmethod
def setup_class(cls):
pass
def test_1(self):
pass
@classmethod
def teardown_class(cls):
pass
""")
result = testdir.runpytest()
result.stdout.fnmatch_lines([
"*1 passed*",
])
class TestGenerator:
def test_generative_functions(self, testdir):
modcol = testdir.getmodulecol("""