diff options
Diffstat (limited to 'Lib/unittest.py')
-rw-r--r-- | Lib/unittest.py | 71 |
1 files changed, 25 insertions, 46 deletions
diff --git a/Lib/unittest.py b/Lib/unittest.py index 4538e302d5..ccce746415 100644 --- a/Lib/unittest.py +++ b/Lib/unittest.py @@ -67,16 +67,6 @@ __all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases']) ############################################################################## # Backward compatibility ############################################################################## -if sys.version_info[:2] < (2, 2): - def isinstance(obj, clsinfo): - import __builtin__ - if type(clsinfo) in (tuple, list): - for cls in clsinfo: - if cls is type: cls = types.ClassType - if __builtin__.isinstance(obj, cls): - return 1 - return 0 - else: return __builtin__.isinstance(obj, clsinfo) def _CmpToKey(mycmp): 'Convert a cmp= function into a key= function' @@ -91,15 +81,12 @@ def _CmpToKey(mycmp): # Test framework core ############################################################################## -# All classes defined herein are 'new-style' classes, allowing use of 'super()' -__metaclass__ = type - def _strclass(cls): return "%s.%s" % (cls.__module__, cls.__name__) __unittest = 1 -class TestResult: +class TestResult(object): """Holder for test result information. Test results are automatically managed by the TestCase and TestSuite @@ -174,7 +161,7 @@ class TestResult: (_strclass(self.__class__), self.testsRun, len(self.errors), len(self.failures)) -class AssertRaisesContext: +class AssertRaisesContext(object): def __init__(self, expected, test_case): self.expected = expected self.failureException = test_case.failureException @@ -193,7 +180,7 @@ class AssertRaisesContext: # Let unexpected exceptions skip through return False -class TestCase: +class TestCase(object): """A class whose instances are single test cases. By default, the test code itself should be placed in a method named @@ -231,8 +218,8 @@ class TestCase: testMethod = getattr(self, methodName) self._testMethodDoc = testMethod.__doc__ except AttributeError: - raise ValueError, "no such test method in %s: %s" % \ - (self.__class__, methodName) + raise ValueError("no such test method in %s: %s" % \ + (self.__class__, methodName)) def setUp(self): "Hook method for setting up the test fixture before exercising it." @@ -287,9 +274,7 @@ class TestCase: try: try: self.setUp() - except KeyboardInterrupt: - raise - except: + except Exception: result.addError(self, self._exc_info()) return @@ -299,16 +284,12 @@ class TestCase: ok = True except self.failureException: result.addFailure(self, self._exc_info()) - except KeyboardInterrupt: - raise - except: + except Exception: result.addError(self, self._exc_info()) try: self.tearDown() - except KeyboardInterrupt: - raise - except: + except Exception: result.addError(self, self._exc_info()) ok = False if ok: result.addSuccess(self) @@ -333,15 +314,15 @@ class TestCase: def fail(self, msg=None): """Fail immediately, with the given message.""" - raise self.failureException, msg + raise self.failureException(msg) def failIf(self, expr, msg=None): "Fail the test if the expression is true." - if expr: raise self.failureException, msg + if expr: raise self.failureException(msg) def failUnless(self, expr, msg=None): """Fail the test unless the expression is true.""" - if not expr: raise self.failureException, msg + if not expr: raise self.failureException(msg) def failUnlessRaises(self, excClass, callableObj=None, *args, **kwargs): """Fail unless an exception of class excClass is thrown @@ -368,16 +349,14 @@ class TestCase: operator. """ if not first == second: - raise self.failureException, \ - (msg or '%r != %r' % (first, second)) + raise self.failureException(msg or '%r != %r' % (first, second)) def failIfEqual(self, first, second, msg=None): """Fail if the two objects are equal as determined by the '==' operator. """ if first == second: - raise self.failureException, \ - (msg or '%r == %r' % (first, second)) + raise self.failureException(msg or '%r == %r' % (first, second)) def failUnlessAlmostEqual(self, first, second, places=7, msg=None): """Fail if the two objects are unequal as determined by their @@ -388,8 +367,8 @@ class TestCase: as significant digits (measured from the most signficant digit). """ if round(abs(second-first), places) != 0: - raise self.failureException, \ - (msg or '%r != %r within %r places' % (first, second, places)) + raise self.failureException( + msg or '%r != %r within %r places' % (first, second, places)) def failIfAlmostEqual(self, first, second, places=7, msg=None): """Fail if the two objects are equal as determined by their @@ -400,8 +379,8 @@ class TestCase: as significant digits (measured from the most signficant digit). """ if round(abs(second-first), places) == 0: - raise self.failureException, \ - (msg or '%r == %r within %r places' % (first, second, places)) + raise self.failureException( + msg or '%r == %r within %r places' % (first, second, places)) # Synonyms for assertion methods @@ -421,7 +400,7 @@ class TestCase: -class TestSuite: +class TestSuite(object): """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. @@ -554,7 +533,7 @@ class FunctionTestCase(TestCase): # Locating and loading tests ############################################################################## -class TestLoader: +class TestLoader(object): """This class is responsible for loading tests according to various criteria and returning them wrapped in a TestSuite """ @@ -605,12 +584,12 @@ class TestLoader: for part in parts: parent, obj = obj, getattr(obj, part) - if type(obj) == types.ModuleType: + if isinstance(obj, types.ModuleType): return self.loadTestsFromModule(obj) elif (isinstance(obj, (type, types.ClassType)) and issubclass(obj, TestCase)): return self.loadTestsFromTestCase(obj) - elif (type(obj) == types.UnboundMethodType and + elif (isinstance(obj, types.UnboundMethodType) and isinstance(parent, (type, types.ClassType)) and issubclass(parent, TestCase)): return TestSuite([parent(obj.__name__)]) @@ -675,7 +654,7 @@ def findTestCases(module, prefix='test', sortUsing=cmp, suiteClass=TestSuite): # Text UI ############################################################################## -class _WritelnDecorator: +class _WritelnDecorator(object): """Used to decorate file-like objects with a handy 'writeln' method""" def __init__(self,stream): self.stream = stream @@ -754,7 +733,7 @@ class _TextTestResult(TestResult): self.stream.writeln("%s" % err) -class TextTestRunner: +class TextTestRunner(object): """A test runner class that displays results in textual form. It prints out the names of tests as they are run, errors as they @@ -800,7 +779,7 @@ class TextTestRunner: # 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 for making test modules conveniently executable. """ @@ -822,7 +801,7 @@ Examples: def __init__(self, module='__main__', defaultTest=None, argv=None, testRunner=TextTestRunner, testLoader=defaultTestLoader): - if type(module) == type(''): + if isinstance(module, basestring): self.module = __import__(module) for part in module.split('.')[1:]: self.module = getattr(self.module, part) |