1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
import StringIO
from twisted.trial import unittest
from twisted.trial import reporter, runner
class TrialTest(unittest.TestCase):
def setUp(self):
self.output = StringIO.StringIO()
self.reporter = reporter.TestResult()
self.loader = runner.TestLoader()
class TestInterruptInTest(TrialTest):
class InterruptedTest(unittest.TestCase):
def test_02_raiseInterrupt(self):
raise KeyboardInterrupt
def test_01_doNothing(self):
pass
def test_03_doNothing(self):
TestInterruptInTest.test_03_doNothing_run = True
def setUp(self):
super(TestInterruptInTest, self).setUp()
self.suite = self.loader.loadClass(TestInterruptInTest.InterruptedTest)
TestInterruptInTest.test_03_doNothing_run = None
def test_setUpOK(self):
self.assertEqual(3, self.suite.countTestCases())
self.assertEqual(0, self.reporter.testsRun)
self.failIf(self.reporter.shouldStop)
def test_interruptInTest(self):
runner.TrialSuite([self.suite]).run(self.reporter)
self.failUnless(self.reporter.shouldStop)
self.assertEqual(2, self.reporter.testsRun)
self.failIf(TestInterruptInTest.test_03_doNothing_run,
"test_03_doNothing ran.")
class TestInterruptInSetUp(TrialTest):
testsRun = 0
class InterruptedTest(unittest.TestCase):
def setUp(self):
if TestInterruptInSetUp.testsRun > 0:
raise KeyboardInterrupt
def test_01(self):
TestInterruptInSetUp.testsRun += 1
def test_02(self):
TestInterruptInSetUp.testsRun += 1
TestInterruptInSetUp.test_02_run = True
def setUp(self):
super(TestInterruptInSetUp, self).setUp()
self.suite = self.loader.loadClass(
TestInterruptInSetUp.InterruptedTest)
TestInterruptInSetUp.test_02_run = False
TestInterruptInSetUp.testsRun = 0
def test_setUpOK(self):
self.assertEqual(0, TestInterruptInSetUp.testsRun)
self.assertEqual(2, self.suite.countTestCases())
self.assertEqual(0, self.reporter.testsRun)
self.failIf(self.reporter.shouldStop)
def test_interruptInSetUp(self):
runner.TrialSuite([self.suite]).run(self.reporter)
self.failUnless(self.reporter.shouldStop)
self.assertEqual(2, self.reporter.testsRun)
self.failIf(TestInterruptInSetUp.test_02_run,
"test_02 ran")
class TestInterruptInTearDown(TrialTest):
testsRun = 0
class InterruptedTest(unittest.TestCase):
def tearDown(self):
if TestInterruptInTearDown.testsRun > 0:
raise KeyboardInterrupt
def test_01(self):
TestInterruptInTearDown.testsRun += 1
def test_02(self):
TestInterruptInTearDown.testsRun += 1
TestInterruptInTearDown.test_02_run = True
def setUp(self):
super(TestInterruptInTearDown, self).setUp()
self.suite = self.loader.loadClass(
TestInterruptInTearDown.InterruptedTest)
TestInterruptInTearDown.testsRun = 0
TestInterruptInTearDown.test_02_run = False
def test_setUpOK(self):
self.assertEqual(0, TestInterruptInTearDown.testsRun)
self.assertEqual(2, self.suite.countTestCases())
self.assertEqual(0, self.reporter.testsRun)
self.failIf(self.reporter.shouldStop)
def test_interruptInTearDown(self):
runner.TrialSuite([self.suite]).run(self.reporter)
self.assertEqual(1, self.reporter.testsRun)
self.failUnless(self.reporter.shouldStop)
self.failIf(TestInterruptInTearDown.test_02_run,
"test_02 ran")
|