mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			135 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			135 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import unittest | ||
|  | 
 | ||
|  | from .support import LoggingResult | ||
|  | 
 | ||
|  | 
 | ||
|  | class Test_TestSkipping(unittest.TestCase): | ||
|  | 
 | ||
|  |     def test_skipping(self): | ||
|  |         class Foo(unittest.TestCase): | ||
|  |             def test_skip_me(self): | ||
|  |                 self.skipTest("skip") | ||
|  |         events = [] | ||
|  |         result = LoggingResult(events) | ||
|  |         test = Foo("test_skip_me") | ||
|  |         test.run(result) | ||
|  |         self.assertEqual(events, ['startTest', 'addSkip', 'stopTest']) | ||
|  |         self.assertEqual(result.skipped, [(test, "skip")]) | ||
|  | 
 | ||
|  |         # Try letting setUp skip the test now. | ||
|  |         class Foo(unittest.TestCase): | ||
|  |             def setUp(self): | ||
|  |                 self.skipTest("testing") | ||
|  |             def test_nothing(self): pass | ||
|  |         events = [] | ||
|  |         result = LoggingResult(events) | ||
|  |         test = Foo("test_nothing") | ||
|  |         test.run(result) | ||
|  |         self.assertEqual(events, ['startTest', 'addSkip', 'stopTest']) | ||
|  |         self.assertEqual(result.skipped, [(test, "testing")]) | ||
|  |         self.assertEqual(result.testsRun, 1) | ||
|  | 
 | ||
|  |     def test_skipping_decorators(self): | ||
|  |         op_table = ((unittest.skipUnless, False, True), | ||
|  |                     (unittest.skipIf, True, False)) | ||
|  |         for deco, do_skip, dont_skip in op_table: | ||
|  |             class Foo(unittest.TestCase): | ||
|  |                 @deco(do_skip, "testing") | ||
|  |                 def test_skip(self): pass | ||
|  | 
 | ||
|  |                 @deco(dont_skip, "testing") | ||
|  |                 def test_dont_skip(self): pass | ||
|  |             test_do_skip = Foo("test_skip") | ||
|  |             test_dont_skip = Foo("test_dont_skip") | ||
|  |             suite = unittest.TestSuite([test_do_skip, test_dont_skip]) | ||
|  |             events = [] | ||
|  |             result = LoggingResult(events) | ||
|  |             suite.run(result) | ||
|  |             self.assertEqual(len(result.skipped), 1) | ||
|  |             expected = ['startTest', 'addSkip', 'stopTest', | ||
|  |                         'startTest', 'addSuccess', 'stopTest'] | ||
|  |             self.assertEqual(events, expected) | ||
|  |             self.assertEqual(result.testsRun, 2) | ||
|  |             self.assertEqual(result.skipped, [(test_do_skip, "testing")]) | ||
|  |             self.assertTrue(result.wasSuccessful()) | ||
|  | 
 | ||
|  |     def test_skip_class(self): | ||
|  |         @unittest.skip("testing") | ||
|  |         class Foo(unittest.TestCase): | ||
|  |             def test_1(self): | ||
|  |                 record.append(1) | ||
|  |         record = [] | ||
|  |         result = unittest.TestResult() | ||
|  |         test = Foo("test_1") | ||
|  |         suite = unittest.TestSuite([test]) | ||
|  |         suite.run(result) | ||
|  |         self.assertEqual(result.skipped, [(test, "testing")]) | ||
|  |         self.assertEqual(record, []) | ||
|  | 
 | ||
|  |     def test_expected_failure(self): | ||
|  |         class Foo(unittest.TestCase): | ||
|  |             @unittest.expectedFailure | ||
|  |             def test_die(self): | ||
|  |                 self.fail("help me!") | ||
|  |         events = [] | ||
|  |         result = LoggingResult(events) | ||
|  |         test = Foo("test_die") | ||
|  |         test.run(result) | ||
|  |         self.assertEqual(events, | ||
|  |                          ['startTest', 'addExpectedFailure', 'stopTest']) | ||
|  |         self.assertEqual(result.expectedFailures[0][0], test) | ||
|  |         self.assertTrue(result.wasSuccessful()) | ||
|  | 
 | ||
|  |     def test_unexpected_success(self): | ||
|  |         class Foo(unittest.TestCase): | ||
|  |             @unittest.expectedFailure | ||
|  |             def test_die(self): | ||
|  |                 pass | ||
|  |         events = [] | ||
|  |         result = LoggingResult(events) | ||
|  |         test = Foo("test_die") | ||
|  |         test.run(result) | ||
|  |         self.assertEqual(events, | ||
|  |                          ['startTest', 'addUnexpectedSuccess', 'stopTest']) | ||
|  |         self.assertFalse(result.failures) | ||
|  |         self.assertEqual(result.unexpectedSuccesses, [test]) | ||
|  |         self.assertTrue(result.wasSuccessful()) | ||
|  | 
 | ||
|  |     def test_skip_doesnt_run_setup(self): | ||
|  |         class Foo(unittest.TestCase): | ||
|  |             wasSetUp = False | ||
|  |             wasTornDown = False | ||
|  |             def setUp(self): | ||
|  |                 Foo.wasSetUp = True | ||
|  |             def tornDown(self): | ||
|  |                 Foo.wasTornDown = True | ||
|  |             @unittest.skip('testing') | ||
|  |             def test_1(self): | ||
|  |                 pass | ||
|  | 
 | ||
|  |         result = unittest.TestResult() | ||
|  |         test = Foo("test_1") | ||
|  |         suite = unittest.TestSuite([test]) | ||
|  |         suite.run(result) | ||
|  |         self.assertEqual(result.skipped, [(test, "testing")]) | ||
|  |         self.assertFalse(Foo.wasSetUp) | ||
|  |         self.assertFalse(Foo.wasTornDown) | ||
|  | 
 | ||
|  |     def test_decorated_skip(self): | ||
|  |         def decorator(func): | ||
|  |             def inner(*a): | ||
|  |                 return func(*a) | ||
|  |             return inner | ||
|  | 
 | ||
|  |         class Foo(unittest.TestCase): | ||
|  |             @decorator | ||
|  |             @unittest.skip('testing') | ||
|  |             def test_1(self): | ||
|  |                 pass | ||
|  | 
 | ||
|  |         result = unittest.TestResult() | ||
|  |         test = Foo("test_1") | ||
|  |         suite = unittest.TestSuite([test]) | ||
|  |         suite.run(result) | ||
|  |         self.assertEqual(result.skipped, [(test, "testing")]) |