OLD | NEW |
1 """Running tests""" | 1 """Running tests""" |
2 | 2 |
3 import sys | 3 import sys |
4 import time | 4 import time |
5 import unittest | 5 import unittest |
6 | 6 |
7 from unittest2 import result | 7 from unittest2 import result |
8 | 8 |
9 try: | 9 try: |
10 from unittest2.signals import registerResult | 10 from unittest2.signals import registerResult |
11 except ImportError: | 11 except ImportError: |
12 def registerResult(_): | 12 def registerResult(_): |
13 pass | 13 pass |
14 | 14 |
15 __unittest = True | 15 __unittest = True |
16 | 16 |
17 | 17 |
18 class _WritelnDecorator(object): | 18 class _WritelnDecorator(object): |
19 """Used to decorate file-like objects with a handy 'writeln' method""" | 19 """Used to decorate file-like objects with a handy 'writeln' method""" |
20 def __init__(self,stream): | 20 def __init__(self,stream): |
21 self.stream = stream | 21 self.stream = stream |
22 | 22 |
23 def __getattr__(self, attr): | 23 def __getattr__(self, attr): |
24 if attr in ('stream', '__getstate__'): | 24 if attr in ('stream', '__getstate__'): |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 | 146 |
147 def _makeResult(self): | 147 def _makeResult(self): |
148 return self.resultclass(self.stream, self.descriptions, self.verbosity) | 148 return self.resultclass(self.stream, self.descriptions, self.verbosity) |
149 | 149 |
150 def run(self, test): | 150 def run(self, test): |
151 "Run the given test case or test suite." | 151 "Run the given test case or test suite." |
152 result = self._makeResult() | 152 result = self._makeResult() |
153 result.failfast = self.failfast | 153 result.failfast = self.failfast |
154 result.buffer = self.buffer | 154 result.buffer = self.buffer |
155 registerResult(result) | 155 registerResult(result) |
156 | 156 |
157 startTime = time.time() | 157 startTime = time.time() |
158 startTestRun = getattr(result, 'startTestRun', None) | 158 startTestRun = getattr(result, 'startTestRun', None) |
159 if startTestRun is not None: | 159 if startTestRun is not None: |
160 startTestRun() | 160 startTestRun() |
161 try: | 161 try: |
162 test(result) | 162 test(result) |
163 finally: | 163 finally: |
164 stopTestRun = getattr(result, 'stopTestRun', None) | 164 stopTestRun = getattr(result, 'stopTestRun', None) |
165 if stopTestRun is not None: | 165 if stopTestRun is not None: |
166 stopTestRun() | 166 stopTestRun() |
167 else: | 167 else: |
168 result.printErrors() | 168 result.printErrors() |
169 stopTime = time.time() | 169 stopTime = time.time() |
170 timeTaken = stopTime - startTime | 170 timeTaken = stopTime - startTime |
171 if hasattr(result, 'separator2'): | 171 if hasattr(result, 'separator2'): |
172 self.stream.writeln(result.separator2) | 172 self.stream.writeln(result.separator2) |
173 run = result.testsRun | 173 run = result.testsRun |
174 self.stream.writeln("Ran %d test%s in %.3fs" % | 174 self.stream.writeln("Ran %d test%s in %.3fs" % |
175 (run, run != 1 and "s" or "", timeTaken)) | 175 (run, run != 1 and "s" or "", timeTaken)) |
176 self.stream.writeln() | 176 self.stream.writeln() |
177 | 177 |
178 expectedFails = unexpectedSuccesses = skipped = 0 | 178 expectedFails = unexpectedSuccesses = skipped = 0 |
179 try: | 179 try: |
180 results = map(len, (result.expectedFailures, | 180 results = map(len, (result.expectedFailures, |
181 result.unexpectedSuccesses, | 181 result.unexpectedSuccesses, |
182 result.skipped)) | 182 result.skipped)) |
183 expectedFails, unexpectedSuccesses, skipped = results | 183 expectedFails, unexpectedSuccesses, skipped = results |
184 except AttributeError: | 184 except AttributeError: |
185 pass | 185 pass |
186 infos = [] | 186 infos = [] |
187 if not result.wasSuccessful(): | 187 if not result.wasSuccessful(): |
188 self.stream.write("FAILED") | 188 self.stream.write("FAILED") |
189 failed, errored = map(len, (result.failures, result.errors)) | 189 failed, errored = map(len, (result.failures, result.errors)) |
190 if failed: | 190 if failed: |
191 infos.append("failures=%d" % failed) | 191 infos.append("failures=%d" % failed) |
192 if errored: | 192 if errored: |
193 infos.append("errors=%d" % errored) | 193 infos.append("errors=%d" % errored) |
194 else: | 194 else: |
195 self.stream.write("OK") | 195 self.stream.write("OK") |
196 if skipped: | 196 if skipped: |
197 infos.append("skipped=%d" % skipped) | 197 infos.append("skipped=%d" % skipped) |
198 if expectedFails: | 198 if expectedFails: |
199 infos.append("expected failures=%d" % expectedFails) | 199 infos.append("expected failures=%d" % expectedFails) |
200 if unexpectedSuccesses: | 200 if unexpectedSuccesses: |
201 infos.append("unexpected successes=%d" % unexpectedSuccesses) | 201 infos.append("unexpected successes=%d" % unexpectedSuccesses) |
202 if infos: | 202 if infos: |
203 self.stream.writeln(" (%s)" % (", ".join(infos),)) | 203 self.stream.writeln(" (%s)" % (", ".join(infos),)) |
204 else: | 204 else: |
205 self.stream.write("\n") | 205 self.stream.write("\n") |
206 return result | 206 return result |
OLD | NEW |