1 2import unittest 3 4class ExceptionTestCase(unittest.TestCase): 5 def test_try_except_else_finally(self): 6 hit_except = False 7 hit_else = False 8 hit_finally = False 9 10 try: 11 raise Exception('nyaa!') 12 except: 13 hit_except = True 14 else: 15 hit_else = True 16 finally: 17 hit_finally = True 18 19 self.assertTrue(hit_except) 20 self.assertTrue(hit_finally) 21 self.assertFalse(hit_else) 22 23 def test_try_except_else_finally_no_exception(self): 24 hit_except = False 25 hit_else = False 26 hit_finally = False 27 28 try: 29 pass 30 except: 31 hit_except = True 32 else: 33 hit_else = True 34 finally: 35 hit_finally = True 36 37 self.assertFalse(hit_except) 38 self.assertTrue(hit_finally) 39 self.assertTrue(hit_else) 40 41 def test_try_except_finally(self): 42 hit_except = False 43 hit_finally = False 44 45 try: 46 raise Exception('yarr!') 47 except: 48 hit_except = True 49 finally: 50 hit_finally = True 51 52 self.assertTrue(hit_except) 53 self.assertTrue(hit_finally) 54 55 def test_try_except_finally_no_exception(self): 56 hit_except = False 57 hit_finally = False 58 59 try: 60 pass 61 except: 62 hit_except = True 63 finally: 64 hit_finally = True 65 66 self.assertFalse(hit_except) 67 self.assertTrue(hit_finally) 68 69 def test_try_except(self): 70 hit_except = False 71 72 try: 73 raise Exception('ahoy!') 74 except: 75 hit_except = True 76 77 self.assertTrue(hit_except) 78 79 def test_try_except_no_exception(self): 80 hit_except = False 81 82 try: 83 pass 84 except: 85 hit_except = True 86 87 self.assertFalse(hit_except) 88 89 def test_try_except_else(self): 90 hit_except = False 91 hit_else = False 92 93 try: 94 raise Exception('foo!') 95 except: 96 hit_except = True 97 else: 98 hit_else = True 99 100 self.assertFalse(hit_else) 101 self.assertTrue(hit_except) 102 103 def test_try_except_else_no_exception(self): 104 hit_except = False 105 hit_else = False 106 107 try: 108 pass 109 except: 110 hit_except = True 111 else: 112 hit_else = True 113 114 self.assertFalse(hit_except) 115 self.assertTrue(hit_else) 116 117 def test_try_finally_no_exception(self): 118 hit_finally = False 119 120 try: 121 pass 122 finally: 123 hit_finally = True 124 125 self.assertTrue(hit_finally) 126 127 def test_nested(self): 128 hit_finally = False 129 hit_inner_except = False 130 hit_inner_finally = False 131 132 try: 133 try: 134 raise Exception('inner exception') 135 except: 136 hit_inner_except = True 137 finally: 138 hit_inner_finally = True 139 finally: 140 hit_finally = True 141 142 self.assertTrue(hit_inner_except) 143 self.assertTrue(hit_inner_finally) 144 self.assertTrue(hit_finally) 145 146 def test_nested_else(self): 147 hit_else = False 148 hit_finally = False 149 hit_except = False 150 hit_inner_except = False 151 hit_inner_else = False 152 153 try: 154 try: 155 pass 156 except: 157 hit_inner_except = True 158 else: 159 hit_inner_else = True 160 161 raise Exception('outer exception') 162 except: 163 hit_except = True 164 else: 165 hit_else = True 166 finally: 167 hit_finally = True 168 169 self.assertFalse(hit_inner_except) 170 self.assertTrue(hit_inner_else) 171 self.assertFalse(hit_else) 172 self.assertTrue(hit_finally) 173 self.assertTrue(hit_except) 174 175if __name__ == '__main__': 176 unittest.main() 177