def setUp(self): TestWithFakeExceptions.setUp(self) self.result_semaphore = threading.Semaphore(1) self.target = LoggingResult([]) self.result1 = ThreadsafeForwardingResult(self.target, self.result_semaphore)
def test_stopTestRun(self): self.result1.stopTestRun() self.result2 = ThreadsafeForwardingResult(self.target, self.result_semaphore) self.result2.stopTestRun() self.assertEqual(["stopTestRun", "stopTestRun"], self.target._events)
class TestThreadSafeForwardingResult(TestWithFakeExceptions): """Tests for `TestThreadSafeForwardingResult`.""" def setUp(self): TestWithFakeExceptions.setUp(self) self.result_semaphore = threading.Semaphore(1) self.target = LoggingResult([]) self.result1 = ThreadsafeForwardingResult(self.target, self.result_semaphore) def test_nonforwarding_methods(self): # startTest and stopTest are not forwarded because they need to be # batched. self.result1.startTest(self) self.result1.stopTest(self) self.assertEqual([], self.target._events) def test_startTestRun(self): self.result1.startTestRun() self.result2 = ThreadsafeForwardingResult(self.target, self.result_semaphore) self.result2.startTestRun() self.assertEqual(["startTestRun", "startTestRun"], self.target._events) def test_stopTestRun(self): self.result1.stopTestRun() self.result2 = ThreadsafeForwardingResult(self.target, self.result_semaphore) self.result2.stopTestRun() self.assertEqual(["stopTestRun", "stopTestRun"], self.target._events) def test_forwarding_methods(self): # error, failure, skip and success are forwarded in batches. exc_info1 = self.makeExceptionInfo(RuntimeError, 'error') starttime1 = datetime.datetime.utcfromtimestamp(1.489) endtime1 = datetime.datetime.utcfromtimestamp(51.476) self.result1.time(starttime1) self.result1.startTest(self) self.result1.time(endtime1) self.result1.addError(self, exc_info1) exc_info2 = self.makeExceptionInfo(AssertionError, 'failure') starttime2 = datetime.datetime.utcfromtimestamp(2.489) endtime2 = datetime.datetime.utcfromtimestamp(3.476) self.result1.time(starttime2) self.result1.startTest(self) self.result1.time(endtime2) self.result1.addFailure(self, exc_info2) reason = _u("Skipped for some reason") starttime3 = datetime.datetime.utcfromtimestamp(4.489) endtime3 = datetime.datetime.utcfromtimestamp(5.476) self.result1.time(starttime3) self.result1.startTest(self) self.result1.time(endtime3) self.result1.addSkip(self, reason) starttime4 = datetime.datetime.utcfromtimestamp(6.489) endtime4 = datetime.datetime.utcfromtimestamp(7.476) self.result1.time(starttime4) self.result1.startTest(self) self.result1.time(endtime4) self.result1.addSuccess(self) self.assertEqual([ ('time', starttime1), ('startTest', self), ('time', endtime1), ('addError', self, exc_info1), ('stopTest', self), ('time', starttime2), ('startTest', self), ('time', endtime2), ('addFailure', self, exc_info2), ('stopTest', self), ('time', starttime3), ('startTest', self), ('time', endtime3), ('addSkip', self, reason), ('stopTest', self), ('time', starttime4), ('startTest', self), ('time', endtime4), ('addSuccess', self), ('stopTest', self), ], self.target._events)
def makeResult(self): result_semaphore = threading.Semaphore(1) target = TestResult() return ThreadsafeForwardingResult(target, result_semaphore)