Skip to content

Commit f91d974

Browse files
bpo-45102: unittest: add tests for skipping and errors in cleanup (GH-28166)
(cherry picked from commit 2826426) Co-authored-by: Serhiy Storchaka <[email protected]>
1 parent ab58269 commit f91d974

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

Lib/unittest/test/test_skipping.py

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,58 @@ class Foo(Mixin, unittest.TestCase):
161161
self.assertEqual(result.skipped, [(test, "testing")])
162162
self.assertEqual(record, [])
163163

164+
def test_skip_in_setup(self):
165+
class Foo(unittest.TestCase):
166+
def setUp(self):
167+
self.skipTest("skip")
168+
def test_skip_me(self):
169+
self.fail("shouldn't come here")
170+
events = []
171+
result = LoggingResult(events)
172+
test = Foo("test_skip_me")
173+
self.assertIs(test.run(result), result)
174+
self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])
175+
self.assertEqual(result.skipped, [(test, "skip")])
176+
177+
def test_skip_in_cleanup(self):
178+
class Foo(unittest.TestCase):
179+
def test_skip_me(self):
180+
pass
181+
def tearDown(self):
182+
self.skipTest("skip")
183+
events = []
184+
result = LoggingResult(events)
185+
test = Foo("test_skip_me")
186+
self.assertIs(test.run(result), result)
187+
self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])
188+
self.assertEqual(result.skipped, [(test, "skip")])
189+
190+
def test_failure_and_skip_in_cleanup(self):
191+
class Foo(unittest.TestCase):
192+
def test_skip_me(self):
193+
self.fail("fail")
194+
def tearDown(self):
195+
self.skipTest("skip")
196+
events = []
197+
result = LoggingResult(events)
198+
test = Foo("test_skip_me")
199+
self.assertIs(test.run(result), result)
200+
self.assertEqual(events, ['startTest', 'addSkip', 'addFailure', 'stopTest'])
201+
self.assertEqual(result.skipped, [(test, "skip")])
202+
203+
def test_skipping_and_fail_in_cleanup(self):
204+
class Foo(unittest.TestCase):
205+
def test_skip_me(self):
206+
self.skipTest("skip")
207+
def tearDown(self):
208+
self.fail("fail")
209+
events = []
210+
result = LoggingResult(events)
211+
test = Foo("test_skip_me")
212+
self.assertIs(test.run(result), result)
213+
self.assertEqual(events, ['startTest', 'addSkip', 'addFailure', 'stopTest'])
214+
self.assertEqual(result.skipped, [(test, "skip")])
215+
164216
def test_expected_failure(self):
165217
class Foo(unittest.TestCase):
166218
@unittest.expectedFailure
@@ -172,7 +224,9 @@ def test_die(self):
172224
self.assertIs(test.run(result), result)
173225
self.assertEqual(events,
174226
['startTest', 'addExpectedFailure', 'stopTest'])
227+
self.assertFalse(result.failures)
175228
self.assertEqual(result.expectedFailures[0][0], test)
229+
self.assertFalse(result.unexpectedSuccesses)
176230
self.assertTrue(result.wasSuccessful())
177231

178232
def test_expected_failure_with_wrapped_class(self):
@@ -187,7 +241,9 @@ def test_1(self):
187241
self.assertIs(test.run(result), result)
188242
self.assertEqual(events,
189243
['startTest', 'addExpectedFailure', 'stopTest'])
244+
self.assertFalse(result.failures)
190245
self.assertEqual(result.expectedFailures[0][0], test)
246+
self.assertFalse(result.unexpectedSuccesses)
191247
self.assertTrue(result.wasSuccessful())
192248

193249
def test_expected_failure_with_wrapped_subclass(self):
@@ -205,7 +261,9 @@ class Bar(Foo):
205261
self.assertIs(test.run(result), result)
206262
self.assertEqual(events,
207263
['startTest', 'addExpectedFailure', 'stopTest'])
264+
self.assertFalse(result.failures)
208265
self.assertEqual(result.expectedFailures[0][0], test)
266+
self.assertFalse(result.unexpectedSuccesses)
209267
self.assertTrue(result.wasSuccessful())
210268

211269
def test_expected_failure_subtests(self):
@@ -229,8 +287,48 @@ def test_die(self):
229287
self.assertEqual(events,
230288
['startTest', 'addSubTestSuccess',
231289
'addExpectedFailure', 'stopTest'])
290+
self.assertFalse(result.failures)
232291
self.assertEqual(len(result.expectedFailures), 1)
233292
self.assertIs(result.expectedFailures[0][0], test)
293+
self.assertFalse(result.unexpectedSuccesses)
294+
self.assertTrue(result.wasSuccessful())
295+
296+
def test_expected_failure_and_fail_in_cleanup(self):
297+
class Foo(unittest.TestCase):
298+
@unittest.expectedFailure
299+
def test_die(self):
300+
self.fail("help me!")
301+
def tearDown(self):
302+
self.fail("bad tearDown")
303+
events = []
304+
result = LoggingResult(events)
305+
test = Foo("test_die")
306+
self.assertIs(test.run(result), result)
307+
self.assertEqual(events,
308+
['startTest', 'addFailure', 'stopTest'])
309+
self.assertEqual(len(result.failures), 1)
310+
self.assertIn('AssertionError: bad tearDown', result.failures[0][1])
311+
self.assertFalse(result.expectedFailures)
312+
self.assertFalse(result.unexpectedSuccesses)
313+
self.assertFalse(result.wasSuccessful())
314+
315+
def test_expected_failure_and_skip_in_cleanup(self):
316+
class Foo(unittest.TestCase):
317+
@unittest.expectedFailure
318+
def test_die(self):
319+
self.fail("help me!")
320+
def tearDown(self):
321+
self.skipTest("skip")
322+
events = []
323+
result = LoggingResult(events)
324+
test = Foo("test_die")
325+
self.assertIs(test.run(result), result)
326+
self.assertEqual(events,
327+
['startTest', 'addSkip', 'stopTest'])
328+
self.assertFalse(result.failures)
329+
self.assertFalse(result.expectedFailures)
330+
self.assertFalse(result.unexpectedSuccesses)
331+
self.assertEqual(result.skipped, [(test, "skip")])
234332
self.assertTrue(result.wasSuccessful())
235333

236334
def test_unexpected_success(self):
@@ -245,6 +343,7 @@ def test_die(self):
245343
self.assertEqual(events,
246344
['startTest', 'addUnexpectedSuccess', 'stopTest'])
247345
self.assertFalse(result.failures)
346+
self.assertFalse(result.expectedFailures)
248347
self.assertEqual(result.unexpectedSuccesses, [test])
249348
self.assertFalse(result.wasSuccessful())
250349

@@ -269,9 +368,48 @@ def test_die(self):
269368
'addSubTestSuccess', 'addSubTestSuccess',
270369
'addUnexpectedSuccess', 'stopTest'])
271370
self.assertFalse(result.failures)
371+
self.assertFalse(result.expectedFailures)
272372
self.assertEqual(result.unexpectedSuccesses, [test])
273373
self.assertFalse(result.wasSuccessful())
274374

375+
def test_unexpected_success_and_fail_in_cleanup(self):
376+
class Foo(unittest.TestCase):
377+
@unittest.expectedFailure
378+
def test_die(self):
379+
pass
380+
def tearDown(self):
381+
self.fail("bad tearDown")
382+
events = []
383+
result = LoggingResult(events)
384+
test = Foo("test_die")
385+
self.assertIs(test.run(result), result)
386+
self.assertEqual(events,
387+
['startTest', 'addFailure', 'stopTest'])
388+
self.assertEqual(len(result.failures), 1)
389+
self.assertIn('AssertionError: bad tearDown', result.failures[0][1])
390+
self.assertFalse(result.expectedFailures)
391+
self.assertFalse(result.unexpectedSuccesses)
392+
self.assertFalse(result.wasSuccessful())
393+
394+
def test_unexpected_success_and_skip_in_cleanup(self):
395+
class Foo(unittest.TestCase):
396+
@unittest.expectedFailure
397+
def test_die(self):
398+
pass
399+
def tearDown(self):
400+
self.skipTest("skip")
401+
events = []
402+
result = LoggingResult(events)
403+
test = Foo("test_die")
404+
self.assertIs(test.run(result), result)
405+
self.assertEqual(events,
406+
['startTest', 'addSkip', 'stopTest'])
407+
self.assertFalse(result.failures)
408+
self.assertFalse(result.expectedFailures)
409+
self.assertFalse(result.unexpectedSuccesses)
410+
self.assertEqual(result.skipped, [(test, "skip")])
411+
self.assertTrue(result.wasSuccessful())
412+
275413
def test_skip_doesnt_run_setup(self):
276414
class Foo(unittest.TestCase):
277415
wasSetUp = False

0 commit comments

Comments
 (0)