1from unittest2.test.support import LoggingResult 2 3import unittest2 4 5 6class Test_TestSkipping(unittest2.TestCase): 7 8 def test_skipping(self): 9 class Foo(unittest2.TestCase): 10 def test_skip_me(self): 11 self.skipTest("skip") 12 events = [] 13 result = LoggingResult(events) 14 test = Foo("test_skip_me") 15 test.run(result) 16 self.assertEqual(events, ['startTest', 'addSkip', 'stopTest']) 17 self.assertEqual(result.skipped, [(test, "skip")]) 18 19 # Try letting setUp skip the test now. 20 class Foo(unittest2.TestCase): 21 def setUp(self): 22 self.skipTest("testing") 23 def test_nothing(self): pass 24 events = [] 25 result = LoggingResult(events) 26 test = Foo("test_nothing") 27 test.run(result) 28 self.assertEqual(events, ['startTest', 'addSkip', 'stopTest']) 29 self.assertEqual(result.skipped, [(test, "testing")]) 30 self.assertEqual(result.testsRun, 1) 31 32 def test_skipping_decorators(self): 33 op_table = ((unittest2.skipUnless, False, True), 34 (unittest2.skipIf, True, False)) 35 for deco, do_skip, dont_skip in op_table: 36 class Foo(unittest2.TestCase): 37 @deco(do_skip, "testing") 38 def test_skip(self): 39 pass 40 41 @deco(dont_skip, "testing") 42 def test_dont_skip(self): 43 pass 44 45 test_do_skip = Foo("test_skip") 46 test_dont_skip = Foo("test_dont_skip") 47 suite = unittest2.TestSuite([test_do_skip, test_dont_skip]) 48 events = [] 49 result = LoggingResult(events) 50 suite.run(result) 51 self.assertEqual(len(result.skipped), 1) 52 expected = ['startTest', 'addSkip', 'stopTest', 53 'startTest', 'addSuccess', 'stopTest'] 54 self.assertEqual(events, expected) 55 self.assertEqual(result.testsRun, 2) 56 self.assertEqual(result.skipped, [(test_do_skip, "testing")]) 57 self.assertTrue(result.wasSuccessful()) 58 59 def test_skip_class(self): 60 class Foo(unittest2.TestCase): 61 def test_1(self): 62 record.append(1) 63 64 # was originally a class decorator... 65 Foo = unittest2.skip("testing")(Foo) 66 record = [] 67 result = unittest2.TestResult() 68 test = Foo("test_1") 69 suite = unittest2.TestSuite([test]) 70 suite.run(result) 71 self.assertEqual(result.skipped, [(test, "testing")]) 72 self.assertEqual(record, []) 73 74 def test_expected_failure(self): 75 class Foo(unittest2.TestCase): 76 @unittest2.expectedFailure 77 def test_die(self): 78 self.fail("help me!") 79 events = [] 80 result = LoggingResult(events) 81 test = Foo("test_die") 82 test.run(result) 83 self.assertEqual(events, 84 ['startTest', 'addExpectedFailure', 'stopTest']) 85 self.assertEqual(result.expectedFailures[0][0], test) 86 self.assertTrue(result.wasSuccessful()) 87 88 def test_unexpected_success(self): 89 class Foo(unittest2.TestCase): 90 @unittest2.expectedFailure 91 def test_die(self): 92 pass 93 events = [] 94 result = LoggingResult(events) 95 test = Foo("test_die") 96 test.run(result) 97 self.assertEqual(events, 98 ['startTest', 'addUnexpectedSuccess', 'stopTest']) 99 self.assertFalse(result.failures) 100 self.assertEqual(result.unexpectedSuccesses, [test]) 101 self.assertTrue(result.wasSuccessful()) 102 103 def test_skip_doesnt_run_setup(self): 104 class Foo(unittest2.TestCase): 105 wasSetUp = False 106 wasTornDown = False 107 def setUp(self): 108 Foo.wasSetUp = True 109 def tornDown(self): 110 Foo.wasTornDown = True 111 @unittest2.skip('testing') 112 def test_1(self): 113 pass 114 115 result = unittest2.TestResult() 116 test = Foo("test_1") 117 suite = unittest2.TestSuite([test]) 118 suite.run(result) 119 self.assertEqual(result.skipped, [(test, "testing")]) 120 self.assertFalse(Foo.wasSetUp) 121 self.assertFalse(Foo.wasTornDown) 122 123 def test_decorated_skip(self): 124 def decorator(func): 125 def inner(*a): 126 return func(*a) 127 return inner 128 129 class Foo(unittest2.TestCase): 130 @decorator 131 @unittest2.skip('testing') 132 def test_1(self): 133 pass 134 135 result = unittest2.TestResult() 136 test = Foo("test_1") 137 suite = unittest2.TestSuite([test]) 138 suite.run(result) 139 self.assertEqual(result.skipped, [(test, "testing")]) 140 141 142if __name__ == '__main__': 143 unittest2.main() 144