Commit 02416140 authored by FichteFoll's avatar FichteFoll

Patch TestSuite for setUpClass and tearDownClass

The unittest module sure is weird ...
parent 728785c3
...@@ -62,18 +62,32 @@ def inject_into_unittest(): ...@@ -62,18 +62,32 @@ def inject_into_unittest():
msg = '%s is not an instance of %r' % (obj, cls) msg = '%s is not an instance of %r' % (obj, cls)
self.fail(msg) self.fail(msg)
# Patch in setUpClass unittest.TestCase = PatchedTestCase
@wraps(unittest.TestCase.setUp) # no need to call, it's just `pass`
def setUp(self):
cls = self.__class__
if not hasattr(self, '_class_set_up'):
self._class_set_up = True
if hasattr(cls, "setUpClass"):
cls.setUpClass()
# TODO tearDownClass # Patch setUpClass and tearDownClass into unittest.TestSuite
def run(self, result):
def run_if_attr(obj, attrname):
method = getattr(obj, attrname, None)
if method:
method()
unittest.TestCase = PatchedTestCase last_class = None
for test in self._tests:
if last_class.__class__ != test.__class__:
if last_class is not None:
run_if_attr(last_class, 'tearDownClass')
last_class = test.__class__
run_if_attr(last_class, 'setUpClass')
if result.shouldStop:
break
test(result)
if last_class is not None:
run_if_attr(last_class, 'tearDownClass')
return result
unittest.TestSuite.run = run
elif sys.version_info < (3, 2): elif sys.version_info < (3, 2):
unittest.TestCase.assertRegex = unittest.TestCase.assertRegexpMatches unittest.TestCase.assertRegex = unittest.TestCase.assertRegexpMatches
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment