1 # Copyright (c) 2009 Jonathan M. Lange. See LICENSE for details.
3 """Doubles of test result objects, useful for testing unittest code."""
12 class LoggingBase(object):
13 """Basic support for logging of results."""
17 self.shouldStop = False
20 class Python26TestResult(LoggingBase):
21 """A precisely python 2.6 like test result, that logs."""
23 def addError(self, test, err):
24 self._events.append(('addError', test, err))
26 def addFailure(self, test, err):
27 self._events.append(('addFailure', test, err))
29 def addSuccess(self, test):
30 self._events.append(('addSuccess', test))
32 def startTest(self, test):
33 self._events.append(('startTest', test))
36 self.shouldStop = True
38 def stopTest(self, test):
39 self._events.append(('stopTest', test))
42 class Python27TestResult(Python26TestResult):
43 """A precisely python 2.7 like test result, that logs."""
45 def addExpectedFailure(self, test, err):
46 self._events.append(('addExpectedFailure', test, err))
48 def addSkip(self, test, reason):
49 self._events.append(('addSkip', test, reason))
51 def addUnexpectedSuccess(self, test):
52 self._events.append(('addUnexpectedSuccess', test))
54 def startTestRun(self):
55 self._events.append(('startTestRun',))
57 def stopTestRun(self):
58 self._events.append(('stopTestRun',))
61 class ExtendedTestResult(Python27TestResult):
62 """A test result like the proposed extended unittest result API."""
64 def addError(self, test, err=None, details=None):
65 self._events.append(('addError', test, err or details))
67 def addFailure(self, test, err=None, details=None):
68 self._events.append(('addFailure', test, err or details))
70 def addExpectedFailure(self, test, err=None, details=None):
71 self._events.append(('addExpectedFailure', test, err or details))
73 def addSkip(self, test, reason=None, details=None):
74 self._events.append(('addSkip', test, reason or details))
76 def addSuccess(self, test, details=None):
78 self._events.append(('addSuccess', test, details))
80 self._events.append(('addSuccess', test))
82 def addUnexpectedSuccess(self, test, details=None):
83 if details is not None:
84 self._events.append(('addUnexpectedSuccess', test, details))
86 self._events.append(('addUnexpectedSuccess', test))
88 def progress(self, offset, whence):
89 self._events.append(('progress', offset, whence))
91 def tags(self, new_tags, gone_tags):
92 self._events.append(('tags', new_tags, gone_tags))
95 self._events.append(('time', time))