Commit 1467ac8e authored by Benjamin Peterson's avatar Benjamin Peterson

Merged revisions 67985 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r67985 | antoine.pitrou | 2008-12-28 10:01:11 -0600 (Sun, 28 Dec 2008) | 4 lines

  Issue #2153: modernize coding style of unittest.py, remove obsolete compatibility stuff.
  Patch by Virgil Dupras.
........
parent 60e9e615
...@@ -73,7 +73,7 @@ def _strclass(cls): ...@@ -73,7 +73,7 @@ def _strclass(cls):
__unittest = 1 __unittest = 1
class TestResult: class TestResult(object):
"""Holder for test result information. """Holder for test result information.
Test results are automatically managed by the TestCase and TestSuite Test results are automatically managed by the TestCase and TestSuite
...@@ -149,7 +149,7 @@ class TestResult: ...@@ -149,7 +149,7 @@ class TestResult:
(_strclass(self.__class__), self.testsRun, len(self.errors), (_strclass(self.__class__), self.testsRun, len(self.errors),
len(self.failures)) len(self.failures))
class AssertRaisesContext: class AssertRaisesContext(object):
def __init__(self, expected, test_case, callable_obj=None): def __init__(self, expected, test_case, callable_obj=None):
self.expected = expected self.expected = expected
self.failureException = test_case.failureException self.failureException = test_case.failureException
...@@ -179,7 +179,7 @@ class AssertRaisesContext: ...@@ -179,7 +179,7 @@ class AssertRaisesContext:
# Let unexpected exceptions skip through # Let unexpected exceptions skip through
return False return False
class TestCase: class TestCase(object):
"""A class whose instances are single test cases. """A class whose instances are single test cases.
By default, the test code itself should be placed in a method named By default, the test code itself should be placed in a method named
...@@ -217,8 +217,8 @@ class TestCase: ...@@ -217,8 +217,8 @@ class TestCase:
testMethod = getattr(self, methodName) testMethod = getattr(self, methodName)
self._testMethodDoc = testMethod.__doc__ self._testMethodDoc = testMethod.__doc__
except AttributeError: except AttributeError:
raise ValueError("no such test method in %s: %s" raise ValueError("no such test method in %s: %s" % \
% (self.__class__, methodName)) (self.__class__, methodName))
def setUp(self): def setUp(self):
"Hook method for setting up the test fixture before exercising it." "Hook method for setting up the test fixture before exercising it."
...@@ -273,9 +273,7 @@ class TestCase: ...@@ -273,9 +273,7 @@ class TestCase:
try: try:
try: try:
self.setUp() self.setUp()
except KeyboardInterrupt: except Exception:
raise
except:
result.addError(self, self._exc_info()) result.addError(self, self._exc_info())
return return
...@@ -285,16 +283,12 @@ class TestCase: ...@@ -285,16 +283,12 @@ class TestCase:
ok = True ok = True
except self.failureException: except self.failureException:
result.addFailure(self, self._exc_info()) result.addFailure(self, self._exc_info())
except KeyboardInterrupt: except Exception:
raise
except:
result.addError(self, self._exc_info()) result.addError(self, self._exc_info())
try: try:
self.tearDown() self.tearDown()
except KeyboardInterrupt: except Exception:
raise
except:
result.addError(self, self._exc_info()) result.addError(self, self._exc_info())
ok = False ok = False
if ok: result.addSuccess(self) if ok: result.addSuccess(self)
...@@ -372,8 +366,8 @@ class TestCase: ...@@ -372,8 +366,8 @@ class TestCase:
as significant digits (measured from the most signficant digit). as significant digits (measured from the most signficant digit).
""" """
if round(abs(second-first), places) != 0: if round(abs(second-first), places) != 0:
raise self.failureException(msg or '%r != %r within %r places' raise self.failureException(
% (first, second, places)) msg or '%r != %r within %r places' % (first, second, places))
def failIfAlmostEqual(self, first, second, *, places=7, msg=None): def failIfAlmostEqual(self, first, second, *, places=7, msg=None):
"""Fail if the two objects are equal as determined by their """Fail if the two objects are equal as determined by their
...@@ -384,8 +378,8 @@ class TestCase: ...@@ -384,8 +378,8 @@ class TestCase:
as significant digits (measured from the most signficant digit). as significant digits (measured from the most signficant digit).
""" """
if round(abs(second-first), places) == 0: if round(abs(second-first), places) == 0:
raise self.failureException(msg or '%r == %r within %r places' raise self.failureException(
% (first, second, places)) msg or '%r == %r within %r places' % (first, second, places))
# Synonyms for assertion methods # Synonyms for assertion methods
...@@ -405,7 +399,7 @@ class TestCase: ...@@ -405,7 +399,7 @@ class TestCase:
class TestSuite: class TestSuite(object):
"""A test suite is a composite test consisting of a number of TestCases. """A test suite is a composite test consisting of a number of TestCases.
For use, create an instance of TestSuite, then add test case instances. For use, create an instance of TestSuite, then add test case instances.
...@@ -545,7 +539,7 @@ def CmpToKey(mycmp): ...@@ -545,7 +539,7 @@ def CmpToKey(mycmp):
return mycmp(self.obj, other.obj) == -1 return mycmp(self.obj, other.obj) == -1
return K return K
class TestLoader: class TestLoader(object):
"""This class is responsible for loading tests according to various """This class is responsible for loading tests according to various
criteria and returning them wrapped in a TestSuite criteria and returning them wrapped in a TestSuite
""" """
...@@ -596,7 +590,7 @@ class TestLoader: ...@@ -596,7 +590,7 @@ class TestLoader:
for part in parts: for part in parts:
parent, obj = obj, getattr(obj, part) parent, obj = obj, getattr(obj, part)
if type(obj) == types.ModuleType: if isinstance(obj, types.ModuleType):
return self.loadTestsFromModule(obj) return self.loadTestsFromModule(obj)
elif isinstance(obj, type) and issubclass(obj, TestCase): elif isinstance(obj, type) and issubclass(obj, TestCase):
return self.loadTestsFromTestCase(obj) return self.loadTestsFromTestCase(obj)
...@@ -672,7 +666,7 @@ def findTestCases(module, prefix='test', sortUsing=cmp, suiteClass=TestSuite): ...@@ -672,7 +666,7 @@ def findTestCases(module, prefix='test', sortUsing=cmp, suiteClass=TestSuite):
# Text UI # Text UI
############################################################################## ##############################################################################
class _WritelnDecorator: class _WritelnDecorator(object):
"""Used to decorate file-like objects with a handy 'writeln' method""" """Used to decorate file-like objects with a handy 'writeln' method"""
def __init__(self,stream): def __init__(self,stream):
self.stream = stream self.stream = stream
...@@ -751,7 +745,7 @@ class _TextTestResult(TestResult): ...@@ -751,7 +745,7 @@ class _TextTestResult(TestResult):
self.stream.writeln("%s" % err) self.stream.writeln("%s" % err)
class TextTestRunner: class TextTestRunner(object):
"""A test runner class that displays results in textual form. """A test runner class that displays results in textual form.
It prints out the names of tests as they are run, errors as they It prints out the names of tests as they are run, errors as they
...@@ -797,7 +791,7 @@ class TextTestRunner: ...@@ -797,7 +791,7 @@ class TextTestRunner:
# Facilities for running tests from the command line # Facilities for running tests from the command line
############################################################################## ##############################################################################
class TestProgram: class TestProgram(object):
"""A command-line program that runs a set of tests; this is primarily """A command-line program that runs a set of tests; this is primarily
for making test modules conveniently executable. for making test modules conveniently executable.
""" """
...@@ -819,7 +813,7 @@ Examples: ...@@ -819,7 +813,7 @@ Examples:
def __init__(self, module='__main__', defaultTest=None, def __init__(self, module='__main__', defaultTest=None,
argv=None, testRunner=TextTestRunner, argv=None, testRunner=TextTestRunner,
testLoader=defaultTestLoader): testLoader=defaultTestLoader):
if type(module) == type(''): if isinstance(module, basestring):
self.module = __import__(module) self.module = __import__(module)
for part in module.split('.')[1:]: for part in module.split('.')[1:]:
self.module = getattr(self.module, part) self.module = getattr(self.module, part)
......
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