2 from twisted.trial import unittest
3 from twisted.trial import reporter, runner
6 class TrialTest(unittest.TestCase):
8 self.output = StringIO.StringIO()
9 self.reporter = reporter.TestResult()
10 self.loader = runner.TestLoader()
13 class TestInterruptInTest(TrialTest):
14 class InterruptedTest(unittest.TestCase):
15 def test_02_raiseInterrupt(self):
16 raise KeyboardInterrupt
18 def test_01_doNothing(self):
21 def test_03_doNothing(self):
22 TestInterruptInTest.test_03_doNothing_run = True
25 super(TestInterruptInTest, self).setUp()
26 self.suite = self.loader.loadClass(TestInterruptInTest.InterruptedTest)
27 TestInterruptInTest.test_03_doNothing_run = None
29 def test_setUpOK(self):
30 self.assertEqual(3, self.suite.countTestCases())
31 self.assertEqual(0, self.reporter.testsRun)
32 self.failIf(self.reporter.shouldStop)
34 def test_interruptInTest(self):
35 runner.TrialSuite([self.suite]).run(self.reporter)
36 self.failUnless(self.reporter.shouldStop)
37 self.assertEqual(2, self.reporter.testsRun)
38 self.failIf(TestInterruptInTest.test_03_doNothing_run,
39 "test_03_doNothing ran.")
42 class TestInterruptInSetUp(TrialTest):
45 class InterruptedTest(unittest.TestCase):
47 if TestInterruptInSetUp.testsRun > 0:
48 raise KeyboardInterrupt
51 TestInterruptInSetUp.testsRun += 1
54 TestInterruptInSetUp.testsRun += 1
55 TestInterruptInSetUp.test_02_run = True
58 super(TestInterruptInSetUp, self).setUp()
59 self.suite = self.loader.loadClass(
60 TestInterruptInSetUp.InterruptedTest)
61 TestInterruptInSetUp.test_02_run = False
62 TestInterruptInSetUp.testsRun = 0
64 def test_setUpOK(self):
65 self.assertEqual(0, TestInterruptInSetUp.testsRun)
66 self.assertEqual(2, self.suite.countTestCases())
67 self.assertEqual(0, self.reporter.testsRun)
68 self.failIf(self.reporter.shouldStop)
70 def test_interruptInSetUp(self):
71 runner.TrialSuite([self.suite]).run(self.reporter)
72 self.failUnless(self.reporter.shouldStop)
73 self.assertEqual(2, self.reporter.testsRun)
74 self.failIf(TestInterruptInSetUp.test_02_run,
78 class TestInterruptInTearDown(TrialTest):
81 class InterruptedTest(unittest.TestCase):
83 if TestInterruptInTearDown.testsRun > 0:
84 raise KeyboardInterrupt
87 TestInterruptInTearDown.testsRun += 1
90 TestInterruptInTearDown.testsRun += 1
91 TestInterruptInTearDown.test_02_run = True
94 super(TestInterruptInTearDown, self).setUp()
95 self.suite = self.loader.loadClass(
96 TestInterruptInTearDown.InterruptedTest)
97 TestInterruptInTearDown.testsRun = 0
98 TestInterruptInTearDown.test_02_run = False
100 def test_setUpOK(self):
101 self.assertEqual(0, TestInterruptInTearDown.testsRun)
102 self.assertEqual(2, self.suite.countTestCases())
103 self.assertEqual(0, self.reporter.testsRun)
104 self.failIf(self.reporter.shouldStop)
106 def test_interruptInTearDown(self):
107 runner.TrialSuite([self.suite]).run(self.reporter)
108 self.assertEqual(1, self.reporter.testsRun)
109 self.failUnless(self.reporter.shouldStop)
110 self.failIf(TestInterruptInTearDown.test_02_run,