--- /usr/lib/python2.5/unittest.py 2008-04-17 10:26:37.000000000 -0400 +++ unittest.py 2008-06-25 15:37:41.000000000 -0400 @@ -53,12 +53,14 @@ import traceback import os import types +from functools import wraps ############################################################################## # Exported classes and functions ############################################################################## __all__ = ['TestResult', 'TestCase', 'TestSuite', 'TextTestRunner', - 'TestLoader', 'FunctionTestCase', 'main', 'defaultTestLoader'] + 'TestLoader', 'FunctionTestCase', 'main', 'defaultTestLoader', + 'disabled'] # Expose obsolete functions for backwards compatibility __all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases']) @@ -92,6 +94,16 @@ __unittest = 1 +def disabled(func): + + """Mark a test as disabled.""" + + @wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + wrapper.__disabled__ = True + return wrapper + class TestResult: """Holder for test result information. @@ -106,6 +118,7 @@ def __init__(self): self.failures = [] self.errors = [] + self.disableds = [] self.testsRun = 0 self.shouldStop = 0 @@ -128,6 +141,10 @@ returned by sys.exc_info().""" self.failures.append((test, self._exc_info_to_string(err, test))) + def addDisabled(self, test): + """Called when a test is disabled.""" + self.disableds.append(test) + def addSuccess(self, test): "Called when a test has completed successfully" pass @@ -247,6 +264,16 @@ result.startTest(self) testMethod = getattr(self, self._testMethodName) try: + is_disabled = testMethod.__disabled__ + except AttributeError: + is_disabled = False + + if is_disabled: + result.addDisabled(self) + result.stopTest(self) + return + + try: try: self.setUp() except KeyboardInterrupt: @@ -670,6 +697,13 @@ elif self.dots: self.stream.write('F') + def addDisabled(self, test): + TestResult.addDisabled(self, test) + if self.showAll: + self.stream.writeln("DISABLED") + elif self.dots: + self.stream.write("D") + def printErrors(self): if self.dots or self.showAll: self.stream.writeln()