294
303
('stopTest', foo)], result._events)
306
class TestByTestResultTests(testtools.TestCase):
309
super(TestByTestResultTests, self).setUp()
311
self.result = subunit.test_results.TestByTestResult(self.on_test)
312
self.result._now = iter(range(5)).next
314
def assertCalled(self, **kwargs):
322
defaults.update(kwargs)
323
self.assertEqual([defaults], self.log)
325
def on_test(self, **kwargs):
326
self.log.append(kwargs)
328
def test_no_tests_nothing_reported(self):
329
self.result.startTestRun()
330
self.result.stopTestRun()
331
self.assertEqual([], self.log)
333
def test_add_success(self):
334
self.result.startTest(self)
335
self.result.addSuccess(self)
336
self.result.stopTest(self)
337
self.assertCalled(status='success')
339
def test_add_success_details(self):
340
self.result.startTest(self)
341
details = {'foo': 'bar'}
342
self.result.addSuccess(self, details=details)
343
self.result.stopTest(self)
344
self.assertCalled(status='success', details=details)
347
if not getattr(self.result, 'tags', None):
348
self.skipTest("No tags in testtools")
349
self.result.tags(['foo'], [])
350
self.result.startTest(self)
351
self.result.addSuccess(self)
352
self.result.stopTest(self)
353
self.assertCalled(status='success', tags=set(['foo']))
355
def test_add_error(self):
356
self.result.startTest(self)
359
except ZeroDivisionError:
360
error = sys.exc_info()
361
self.result.addError(self, error)
362
self.result.stopTest(self)
365
details={'traceback': TracebackContent(error, self)})
367
def test_add_error_details(self):
368
self.result.startTest(self)
369
details = {"foo": text_content("bar")}
370
self.result.addError(self, details=details)
371
self.result.stopTest(self)
372
self.assertCalled(status='error', details=details)
374
def test_add_failure(self):
375
self.result.startTest(self)
377
self.fail("intentional failure")
378
except self.failureException:
379
failure = sys.exc_info()
380
self.result.addFailure(self, failure)
381
self.result.stopTest(self)
384
details={'traceback': TracebackContent(failure, self)})
386
def test_add_failure_details(self):
387
self.result.startTest(self)
388
details = {"foo": text_content("bar")}
389
self.result.addFailure(self, details=details)
390
self.result.stopTest(self)
391
self.assertCalled(status='failure', details=details)
393
def test_add_xfail(self):
394
self.result.startTest(self)
397
except ZeroDivisionError:
398
error = sys.exc_info()
399
self.result.addExpectedFailure(self, error)
400
self.result.stopTest(self)
403
details={'traceback': TracebackContent(error, self)})
405
def test_add_xfail_details(self):
406
self.result.startTest(self)
407
details = {"foo": text_content("bar")}
408
self.result.addExpectedFailure(self, details=details)
409
self.result.stopTest(self)
410
self.assertCalled(status='xfail', details=details)
412
def test_add_unexpected_success(self):
413
self.result.startTest(self)
414
details = {'foo': 'bar'}
415
self.result.addUnexpectedSuccess(self, details=details)
416
self.result.stopTest(self)
417
self.assertCalled(status='success', details=details)
419
def test_add_skip_reason(self):
420
self.result.startTest(self)
421
reason = self.getUniqueString()
422
self.result.addSkip(self, reason)
423
self.result.stopTest(self)
425
status='skip', details={'reason': text_content(reason)})
427
def test_add_skip_details(self):
428
self.result.startTest(self)
429
details = {'foo': 'bar'}
430
self.result.addSkip(self, details=details)
431
self.result.stopTest(self)
432
self.assertCalled(status='skip', details=details)
434
def test_twice(self):
435
self.result.startTest(self)
436
self.result.addSuccess(self, details={'foo': 'bar'})
437
self.result.stopTest(self)
438
self.result.startTest(self)
439
self.result.addSuccess(self)
440
self.result.stopTest(self)
447
'details': {'foo': 'bar'}},
458
class TestCsvResult(testtools.TestCase):
460
def parse_stream(self, stream):
462
reader = csv.reader(stream)
465
def test_csv_output(self):
467
result = subunit.test_results.CsvResult(stream)
468
result._now = iter(range(5)).next
469
result.startTestRun()
470
result.startTest(self)
471
result.addSuccess(self)
472
result.stopTest(self)
475
[['test', 'status', 'start_time', 'stop_time'],
476
[self.id(), 'success', '0', '1'],
478
self.parse_stream(stream))
480
def test_just_header_when_no_tests(self):
482
result = subunit.test_results.CsvResult(stream)
483
result.startTestRun()
486
[['test', 'status', 'start_time', 'stop_time']],
487
self.parse_stream(stream))
489
def test_no_output_before_events(self):
491
subunit.test_results.CsvResult(stream)
492
self.assertEqual([], self.parse_stream(stream))
297
495
def test_suite():
298
496
loader = subunit.tests.TestUtil.TestLoader()
299
497
result = loader.loadTestsFromName(__name__)