]>
git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_setups.py
3 from cStringIO
import StringIO
9 return unittest
.TestResult()
12 class TestSetups(unittest
.TestCase
):
15 return unittest
.TextTestRunner(resultclass
=resultFactory
,
17 def runTests(self
, *cases
):
18 suite
= unittest
.TestSuite()
20 tests
= unittest
.defaultTestLoader
.loadTestsFromTestCase(case
)
23 runner
= self
.getRunner()
25 # creating a nested suite exposes some potential bugs
26 realSuite
= unittest
.TestSuite()
27 realSuite
.addTest(suite
)
28 # adding empty suites to the end exposes potential bugs
29 suite
.addTest(unittest
.TestSuite())
30 realSuite
.addTest(unittest
.TestSuite())
31 return runner
.run(realSuite
)
33 def test_setup_class(self
):
34 class Test(unittest
.TestCase
):
39 unittest
.TestCase
.setUpClass()
45 result
= self
.runTests(Test
)
47 self
.assertEqual(Test
.setUpCalled
, 1)
48 self
.assertEqual(result
.testsRun
, 2)
49 self
.assertEqual(len(result
.errors
), 0)
51 def test_teardown_class(self
):
52 class Test(unittest
.TestCase
):
55 def tearDownClass(cls
):
56 Test
.tearDownCalled
+= 1
57 unittest
.TestCase
.tearDownClass()
63 result
= self
.runTests(Test
)
65 self
.assertEqual(Test
.tearDownCalled
, 1)
66 self
.assertEqual(result
.testsRun
, 2)
67 self
.assertEqual(len(result
.errors
), 0)
69 def test_teardown_class_two_classes(self
):
70 class Test(unittest
.TestCase
):
73 def tearDownClass(cls
):
74 Test
.tearDownCalled
+= 1
75 unittest
.TestCase
.tearDownClass()
81 class Test2(unittest
.TestCase
):
84 def tearDownClass(cls
):
85 Test2
.tearDownCalled
+= 1
86 unittest
.TestCase
.tearDownClass()
92 result
= self
.runTests(Test
, Test2
)
94 self
.assertEqual(Test
.tearDownCalled
, 1)
95 self
.assertEqual(Test2
.tearDownCalled
, 1)
96 self
.assertEqual(result
.testsRun
, 4)
97 self
.assertEqual(len(result
.errors
), 0)
99 def test_error_in_setupclass(self
):
100 class BrokenTest(unittest
.TestCase
):
103 raise TypeError('foo')
109 result
= self
.runTests(BrokenTest
)
111 self
.assertEqual(result
.testsRun
, 0)
112 self
.assertEqual(len(result
.errors
), 1)
113 error
, _
= result
.errors
[0]
114 self
.assertEqual(str(error
),
115 'setUpClass (%s.BrokenTest)' % __name__
)
117 def test_error_in_teardown_class(self
):
118 class Test(unittest
.TestCase
):
121 def tearDownClass(cls
):
123 raise TypeError('foo')
129 class Test2(unittest
.TestCase
):
132 def tearDownClass(cls
):
134 raise TypeError('foo')
140 result
= self
.runTests(Test
, Test2
)
141 self
.assertEqual(result
.testsRun
, 4)
142 self
.assertEqual(len(result
.errors
), 2)
143 self
.assertEqual(Test
.tornDown
, 1)
144 self
.assertEqual(Test2
.tornDown
, 1)
146 error
, _
= result
.errors
[0]
147 self
.assertEqual(str(error
),
148 'tearDownClass (%s.Test)' % __name__
)
150 def test_class_not_torndown_when_setup_fails(self
):
151 class Test(unittest
.TestCase
):
157 def tearDownClass(cls
):
159 raise TypeError('foo')
164 self
.assertFalse(Test
.tornDown
)
166 def test_class_not_setup_or_torndown_when_skipped(self
):
167 class Test(unittest
.TestCase
):
172 Test
.classSetUp
= True
174 def tearDownClass(cls
):
179 Test
= unittest
.skip("hop")(Test
)
181 self
.assertFalse(Test
.classSetUp
)
182 self
.assertFalse(Test
.tornDown
)
184 def test_setup_teardown_order_with_pathological_suite(self
):
187 class Module1(object):
190 results
.append('Module1.setUpModule')
192 def tearDownModule():
193 results
.append('Module1.tearDownModule')
195 class Module2(object):
198 results
.append('Module2.setUpModule')
200 def tearDownModule():
201 results
.append('Module2.tearDownModule')
203 class Test1(unittest
.TestCase
):
206 results
.append('setup 1')
208 def tearDownClass(cls
):
209 results
.append('teardown 1')
211 results
.append('Test1.testOne')
213 results
.append('Test1.testTwo')
215 class Test2(unittest
.TestCase
):
218 results
.append('setup 2')
220 def tearDownClass(cls
):
221 results
.append('teardown 2')
223 results
.append('Test2.testOne')
225 results
.append('Test2.testTwo')
227 class Test3(unittest
.TestCase
):
230 results
.append('setup 3')
232 def tearDownClass(cls
):
233 results
.append('teardown 3')
235 results
.append('Test3.testOne')
237 results
.append('Test3.testTwo')
239 Test1
.__module__
= Test2
.__module__
= 'Module'
240 Test3
.__module__
= 'Module2'
241 sys
.modules
['Module'] = Module1
242 sys
.modules
['Module2'] = Module2
244 first
= unittest
.TestSuite((Test1('testOne'),))
245 second
= unittest
.TestSuite((Test1('testTwo'),))
246 third
= unittest
.TestSuite((Test2('testOne'),))
247 fourth
= unittest
.TestSuite((Test2('testTwo'),))
248 fifth
= unittest
.TestSuite((Test3('testOne'),))
249 sixth
= unittest
.TestSuite((Test3('testTwo'),))
250 suite
= unittest
.TestSuite((first
, second
, third
, fourth
, fifth
, sixth
))
252 runner
= self
.getRunner()
253 result
= runner
.run(suite
)
254 self
.assertEqual(result
.testsRun
, 6)
255 self
.assertEqual(len(result
.errors
), 0)
257 self
.assertEqual(results
,
258 ['Module1.setUpModule', 'setup 1',
259 'Test1.testOne', 'Test1.testTwo', 'teardown 1',
260 'setup 2', 'Test2.testOne', 'Test2.testTwo',
261 'teardown 2', 'Module1.tearDownModule',
262 'Module2.setUpModule', 'setup 3',
263 'Test3.testOne', 'Test3.testTwo',
264 'teardown 3', 'Module2.tearDownModule'])
266 def test_setup_module(self
):
267 class Module(object):
271 Module
.moduleSetup
+= 1
273 class Test(unittest
.TestCase
):
278 Test
.__module
__ = 'Module'
279 sys
.modules
['Module'] = Module
281 result
= self
.runTests(Test
)
282 self
.assertEqual(Module
.moduleSetup
, 1)
283 self
.assertEqual(result
.testsRun
, 2)
284 self
.assertEqual(len(result
.errors
), 0)
286 def test_error_in_setup_module(self
):
287 class Module(object):
292 Module
.moduleSetup
+= 1
293 raise TypeError('foo')
295 def tearDownModule():
296 Module
.moduleTornDown
+= 1
298 class Test(unittest
.TestCase
):
300 classTornDown
= False
303 Test
.classSetUp
= True
305 def tearDownClass(cls
):
306 Test
.classTornDown
= True
312 class Test2(unittest
.TestCase
):
317 Test
.__module
__ = 'Module'
318 Test2
.__module__
= 'Module'
319 sys
.modules
['Module'] = Module
321 result
= self
.runTests(Test
, Test2
)
322 self
.assertEqual(Module
.moduleSetup
, 1)
323 self
.assertEqual(Module
.moduleTornDown
, 0)
324 self
.assertEqual(result
.testsRun
, 0)
325 self
.assertFalse(Test
.classSetUp
)
326 self
.assertFalse(Test
.classTornDown
)
327 self
.assertEqual(len(result
.errors
), 1)
328 error
, _
= result
.errors
[0]
329 self
.assertEqual(str(error
), 'setUpModule (Module)')
331 def test_testcase_with_missing_module(self
):
332 class Test(unittest
.TestCase
):
337 Test
.__module
__ = 'Module'
338 sys
.modules
.pop('Module', None)
340 result
= self
.runTests(Test
)
341 self
.assertEqual(result
.testsRun
, 2)
343 def test_teardown_module(self
):
344 class Module(object):
347 def tearDownModule():
348 Module
.moduleTornDown
+= 1
350 class Test(unittest
.TestCase
):
355 Test
.__module
__ = 'Module'
356 sys
.modules
['Module'] = Module
358 result
= self
.runTests(Test
)
359 self
.assertEqual(Module
.moduleTornDown
, 1)
360 self
.assertEqual(result
.testsRun
, 2)
361 self
.assertEqual(len(result
.errors
), 0)
363 def test_error_in_teardown_module(self
):
364 class Module(object):
367 def tearDownModule():
368 Module
.moduleTornDown
+= 1
369 raise TypeError('foo')
371 class Test(unittest
.TestCase
):
373 classTornDown
= False
376 Test
.classSetUp
= True
378 def tearDownClass(cls
):
379 Test
.classTornDown
= True
385 class Test2(unittest
.TestCase
):
390 Test
.__module
__ = 'Module'
391 Test2
.__module__
= 'Module'
392 sys
.modules
['Module'] = Module
394 result
= self
.runTests(Test
, Test2
)
395 self
.assertEqual(Module
.moduleTornDown
, 1)
396 self
.assertEqual(result
.testsRun
, 4)
397 self
.assertTrue(Test
.classSetUp
)
398 self
.assertTrue(Test
.classTornDown
)
399 self
.assertEqual(len(result
.errors
), 1)
400 error
, _
= result
.errors
[0]
401 self
.assertEqual(str(error
), 'tearDownModule (Module)')
403 def test_skiptest_in_setupclass(self
):
404 class Test(unittest
.TestCase
):
407 raise unittest
.SkipTest('foo')
413 result
= self
.runTests(Test
)
414 self
.assertEqual(result
.testsRun
, 0)
415 self
.assertEqual(len(result
.errors
), 0)
416 self
.assertEqual(len(result
.skipped
), 1)
417 skipped
= result
.skipped
[0][0]
418 self
.assertEqual(str(skipped
), 'setUpClass (%s.Test)' % __name__
)
420 def test_skiptest_in_setupmodule(self
):
421 class Test(unittest
.TestCase
):
427 class Module(object):
430 raise unittest
.SkipTest('foo')
432 Test
.__module
__ = 'Module'
433 sys
.modules
['Module'] = Module
435 result
= self
.runTests(Test
)
436 self
.assertEqual(result
.testsRun
, 0)
437 self
.assertEqual(len(result
.errors
), 0)
438 self
.assertEqual(len(result
.skipped
), 1)
439 skipped
= result
.skipped
[0][0]
440 self
.assertEqual(str(skipped
), 'setUpModule (Module)')
442 def test_suite_debug_executes_setups_and_teardowns(self
):
445 class Module(object):
448 ordering
.append('setUpModule')
450 def tearDownModule():
451 ordering
.append('tearDownModule')
453 class Test(unittest
.TestCase
):
456 ordering
.append('setUpClass')
458 def tearDownClass(cls
):
459 ordering
.append('tearDownClass')
460 def test_something(self
):
461 ordering
.append('test_something')
463 Test
.__module
__ = 'Module'
464 sys
.modules
['Module'] = Module
466 suite
= unittest
.defaultTestLoader
.loadTestsFromTestCase(Test
)
468 expectedOrder
= ['setUpModule', 'setUpClass', 'test_something', 'tearDownClass', 'tearDownModule']
469 self
.assertEqual(ordering
, expectedOrder
)
471 def test_suite_debug_propagates_exceptions(self
):
472 class Module(object):
476 raise Exception('setUpModule')
478 def tearDownModule():
480 raise Exception('tearDownModule')
482 class Test(unittest
.TestCase
):
486 raise Exception('setUpClass')
488 def tearDownClass(cls
):
490 raise Exception('tearDownClass')
491 def test_something(self
):
493 raise Exception('test_something')
495 Test
.__module
__ = 'Module'
496 sys
.modules
['Module'] = Module
498 _suite
= unittest
.defaultTestLoader
.loadTestsFromTestCase(Test
)
499 suite
= unittest
.TestSuite()
500 suite
.addTest(_suite
)
502 messages
= ('setUpModule', 'tearDownModule', 'setUpClass', 'tearDownClass', 'test_something')
503 for phase
, msg
in enumerate(messages
):
504 with self
.assertRaisesRegexp(Exception, msg
):
507 if __name__
== '__main__':