Best Python code snippet using unittest-xml-reporting_python
test_skipping.py
Source:test_skipping.py  
1import unittest2from unittest.test.support import LoggingResult3class Test_TestSkipping(unittest.TestCase):4    def test_skipping(self):5        class Foo(unittest.TestCase):6            def defaultTestResult(self):7                return LoggingResult(events)8            def test_skip_me(self):9                self.skipTest("skip")10        events = []11        result = LoggingResult(events)12        test = Foo("test_skip_me")13        self.assertIs(test.run(result), result)14        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])15        self.assertEqual(result.skipped, [(test, "skip")])16        events = []17        result = test.run()18        self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip',19                                  'stopTest', 'stopTestRun'])20        self.assertEqual(result.skipped, [(test, "skip")])21        self.assertEqual(result.testsRun, 1)22        # Try letting setUp skip the test now.23        class Foo(unittest.TestCase):24            def defaultTestResult(self):25                return LoggingResult(events)26            def setUp(self):27                self.skipTest("testing")28            def test_nothing(self): pass29        events = []30        result = LoggingResult(events)31        test = Foo("test_nothing")32        self.assertIs(test.run(result), result)33        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])34        self.assertEqual(result.skipped, [(test, "testing")])35        self.assertEqual(result.testsRun, 1)36        events = []37        result = test.run()38        self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip',39                                  'stopTest', 'stopTestRun'])40        self.assertEqual(result.skipped, [(test, "testing")])41        self.assertEqual(result.testsRun, 1)42    def test_skipping_subtests(self):43        class Foo(unittest.TestCase):44            def defaultTestResult(self):45                return LoggingResult(events)46            def test_skip_me(self):47                with self.subTest(a=1):48                    with self.subTest(b=2):49                        self.skipTest("skip 1")50                    self.skipTest("skip 2")51                self.skipTest("skip 3")52        events = []53        result = LoggingResult(events)54        test = Foo("test_skip_me")55        self.assertIs(test.run(result), result)56        self.assertEqual(events, ['startTest', 'addSkip', 'addSkip',57                                  'addSkip', 'stopTest'])58        self.assertEqual(len(result.skipped), 3)59        subtest, msg = result.skipped[0]60        self.assertEqual(msg, "skip 1")61        self.assertIsInstance(subtest, unittest.TestCase)62        self.assertIsNot(subtest, test)63        subtest, msg = result.skipped[1]64        self.assertEqual(msg, "skip 2")65        self.assertIsInstance(subtest, unittest.TestCase)66        self.assertIsNot(subtest, test)67        self.assertEqual(result.skipped[2], (test, "skip 3"))68        events = []69        result = test.run()70        self.assertEqual(events,71                         ['startTestRun', 'startTest', 'addSkip', 'addSkip',72                          'addSkip', 'stopTest', 'stopTestRun'])73        self.assertEqual([msg for subtest, msg in result.skipped],74                         ['skip 1', 'skip 2', 'skip 3'])75    def test_skipping_decorators(self):76        op_table = ((unittest.skipUnless, False, True),77                    (unittest.skipIf, True, False))78        for deco, do_skip, dont_skip in op_table:79            class Foo(unittest.TestCase):80                def defaultTestResult(self):81                    return LoggingResult(events)82                @deco(do_skip, "testing")83                def test_skip(self): pass84                @deco(dont_skip, "testing")85                def test_dont_skip(self): pass86            test_do_skip = Foo("test_skip")87            test_dont_skip = Foo("test_dont_skip")88            suite = unittest.TestSuite([test_do_skip, test_dont_skip])89            events = []90            result = LoggingResult(events)91            self.assertIs(suite.run(result), result)92            self.assertEqual(len(result.skipped), 1)93            expected = ['startTest', 'addSkip', 'stopTest',94                        'startTest', 'addSuccess', 'stopTest']95            self.assertEqual(events, expected)96            self.assertEqual(result.testsRun, 2)97            self.assertEqual(result.skipped, [(test_do_skip, "testing")])98            self.assertTrue(result.wasSuccessful())99            events = []100            result = test_do_skip.run()101            self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip',102                                      'stopTest', 'stopTestRun'])103            self.assertEqual(result.skipped, [(test_do_skip, "testing")])104            events = []105            result = test_dont_skip.run()106            self.assertEqual(events, ['startTestRun', 'startTest', 'addSuccess',107                                      'stopTest', 'stopTestRun'])108            self.assertEqual(result.skipped, [])109    def test_skip_class(self):110        @unittest.skip("testing")111        class Foo(unittest.TestCase):112            def defaultTestResult(self):113                return LoggingResult(events)114            def test_1(self):115                record.append(1)116        events = []117        record = []118        result = LoggingResult(events)119        test = Foo("test_1")120        suite = unittest.TestSuite([test])121        self.assertIs(suite.run(result), result)122        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])123        self.assertEqual(result.skipped, [(test, "testing")])124        self.assertEqual(record, [])125        events = []126        result = test.run()127        self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip',128                                  'stopTest', 'stopTestRun'])129        self.assertEqual(result.skipped, [(test, "testing")])130        self.assertEqual(record, [])131    def test_skip_non_unittest_class(self):132        @unittest.skip("testing")133        class Mixin:134            def test_1(self):135                record.append(1)136        class Foo(Mixin, unittest.TestCase):137            pass138        record = []139        result = unittest.TestResult()140        test = Foo("test_1")141        suite = unittest.TestSuite([test])142        self.assertIs(suite.run(result), result)143        self.assertEqual(result.skipped, [(test, "testing")])144        self.assertEqual(record, [])145    def test_skip_in_setup(self):146        class Foo(unittest.TestCase):147            def setUp(self):148                self.skipTest("skip")149            def test_skip_me(self):150                self.fail("shouldn't come here")151        events = []152        result = LoggingResult(events)153        test = Foo("test_skip_me")154        self.assertIs(test.run(result), result)155        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])156        self.assertEqual(result.skipped, [(test, "skip")])157    def test_skip_in_cleanup(self):158        class Foo(unittest.TestCase):159            def test_skip_me(self):160                pass161            def tearDown(self):162                self.skipTest("skip")163        events = []164        result = LoggingResult(events)165        test = Foo("test_skip_me")166        self.assertIs(test.run(result), result)167        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])168        self.assertEqual(result.skipped, [(test, "skip")])169    def test_failure_and_skip_in_cleanup(self):170        class Foo(unittest.TestCase):171            def test_skip_me(self):172                self.fail("fail")173            def tearDown(self):174                self.skipTest("skip")175        events = []176        result = LoggingResult(events)177        test = Foo("test_skip_me")178        self.assertIs(test.run(result), result)179        self.assertEqual(events, ['startTest', 'addSkip', 'addFailure', 'stopTest'])180        self.assertEqual(result.skipped, [(test, "skip")])181    def test_skipping_and_fail_in_cleanup(self):182        class Foo(unittest.TestCase):183            def test_skip_me(self):184                self.skipTest("skip")185            def tearDown(self):186                self.fail("fail")187        events = []188        result = LoggingResult(events)189        test = Foo("test_skip_me")190        self.assertIs(test.run(result), result)191        self.assertEqual(events, ['startTest', 'addSkip', 'addFailure', 'stopTest'])192        self.assertEqual(result.skipped, [(test, "skip")])193    def test_expected_failure(self):194        class Foo(unittest.TestCase):195            @unittest.expectedFailure196            def test_die(self):197                self.fail("help me!")198        events = []199        result = LoggingResult(events)200        test = Foo("test_die")201        self.assertIs(test.run(result), result)202        self.assertEqual(events,203                         ['startTest', 'addExpectedFailure', 'stopTest'])204        self.assertFalse(result.failures)205        self.assertEqual(result.expectedFailures[0][0], test)206        self.assertFalse(result.unexpectedSuccesses)207        self.assertTrue(result.wasSuccessful())208    def test_expected_failure_with_wrapped_class(self):209        @unittest.expectedFailure210        class Foo(unittest.TestCase):211            def test_1(self):212                self.assertTrue(False)213        events = []214        result = LoggingResult(events)215        test = Foo("test_1")216        self.assertIs(test.run(result), result)217        self.assertEqual(events,218                         ['startTest', 'addExpectedFailure', 'stopTest'])219        self.assertFalse(result.failures)220        self.assertEqual(result.expectedFailures[0][0], test)221        self.assertFalse(result.unexpectedSuccesses)222        self.assertTrue(result.wasSuccessful())223    def test_expected_failure_with_wrapped_subclass(self):224        class Foo(unittest.TestCase):225            def test_1(self):226                self.assertTrue(False)227        @unittest.expectedFailure228        class Bar(Foo):229            pass230        events = []231        result = LoggingResult(events)232        test = Bar("test_1")233        self.assertIs(test.run(result), result)234        self.assertEqual(events,235                         ['startTest', 'addExpectedFailure', 'stopTest'])236        self.assertFalse(result.failures)237        self.assertEqual(result.expectedFailures[0][0], test)238        self.assertFalse(result.unexpectedSuccesses)239        self.assertTrue(result.wasSuccessful())240    def test_expected_failure_subtests(self):241        # A failure in any subtest counts as the expected failure of the242        # whole test.243        class Foo(unittest.TestCase):244            @unittest.expectedFailure245            def test_die(self):246                with self.subTest():247                    # This one succeeds248                    pass249                with self.subTest():250                    self.fail("help me!")251                with self.subTest():252                    # This one doesn't get executed253                    self.fail("shouldn't come here")254        events = []255        result = LoggingResult(events)256        test = Foo("test_die")257        self.assertIs(test.run(result), result)258        self.assertEqual(events,259                         ['startTest', 'addSubTestSuccess',260                          'addExpectedFailure', 'stopTest'])261        self.assertFalse(result.failures)262        self.assertEqual(len(result.expectedFailures), 1)263        self.assertIs(result.expectedFailures[0][0], test)264        self.assertFalse(result.unexpectedSuccesses)265        self.assertTrue(result.wasSuccessful())266    def test_expected_failure_and_fail_in_cleanup(self):267        class Foo(unittest.TestCase):268            @unittest.expectedFailure269            def test_die(self):270                self.fail("help me!")271            def tearDown(self):272                self.fail("bad tearDown")273        events = []274        result = LoggingResult(events)275        test = Foo("test_die")276        self.assertIs(test.run(result), result)277        self.assertEqual(events,278                         ['startTest', 'addFailure', 'stopTest'])279        self.assertEqual(len(result.failures), 1)280        self.assertIn('AssertionError: bad tearDown', result.failures[0][1])281        self.assertFalse(result.expectedFailures)282        self.assertFalse(result.unexpectedSuccesses)283        self.assertFalse(result.wasSuccessful())284    def test_expected_failure_and_skip_in_cleanup(self):285        class Foo(unittest.TestCase):286            @unittest.expectedFailure287            def test_die(self):288                self.fail("help me!")289            def tearDown(self):290                self.skipTest("skip")291        events = []292        result = LoggingResult(events)293        test = Foo("test_die")294        self.assertIs(test.run(result), result)295        self.assertEqual(events,296                         ['startTest', 'addSkip', 'stopTest'])297        self.assertFalse(result.failures)298        self.assertFalse(result.expectedFailures)299        self.assertFalse(result.unexpectedSuccesses)300        self.assertEqual(result.skipped, [(test, "skip")])301        self.assertTrue(result.wasSuccessful())302    def test_unexpected_success(self):303        class Foo(unittest.TestCase):304            @unittest.expectedFailure305            def test_die(self):306                pass307        events = []308        result = LoggingResult(events)309        test = Foo("test_die")310        self.assertIs(test.run(result), result)311        self.assertEqual(events,312                         ['startTest', 'addUnexpectedSuccess', 'stopTest'])313        self.assertFalse(result.failures)314        self.assertFalse(result.expectedFailures)315        self.assertEqual(result.unexpectedSuccesses, [test])316        self.assertFalse(result.wasSuccessful())317    def test_unexpected_success_subtests(self):318        # Success in all subtests counts as the unexpected success of319        # the whole test.320        class Foo(unittest.TestCase):321            @unittest.expectedFailure322            def test_die(self):323                with self.subTest():324                    # This one succeeds325                    pass326                with self.subTest():327                    # So does this one328                    pass329        events = []330        result = LoggingResult(events)331        test = Foo("test_die")332        self.assertIs(test.run(result), result)333        self.assertEqual(events,334                         ['startTest',335                          'addSubTestSuccess', 'addSubTestSuccess',336                          'addUnexpectedSuccess', 'stopTest'])337        self.assertFalse(result.failures)338        self.assertFalse(result.expectedFailures)339        self.assertEqual(result.unexpectedSuccesses, [test])340        self.assertFalse(result.wasSuccessful())341    def test_unexpected_success_and_fail_in_cleanup(self):342        class Foo(unittest.TestCase):343            @unittest.expectedFailure344            def test_die(self):345                pass346            def tearDown(self):347                self.fail("bad tearDown")348        events = []349        result = LoggingResult(events)350        test = Foo("test_die")351        self.assertIs(test.run(result), result)352        self.assertEqual(events,353                         ['startTest', 'addFailure', 'stopTest'])354        self.assertEqual(len(result.failures), 1)355        self.assertIn('AssertionError: bad tearDown', result.failures[0][1])356        self.assertFalse(result.expectedFailures)357        self.assertFalse(result.unexpectedSuccesses)358        self.assertFalse(result.wasSuccessful())359    def test_unexpected_success_and_skip_in_cleanup(self):360        class Foo(unittest.TestCase):361            @unittest.expectedFailure362            def test_die(self):363                pass364            def tearDown(self):365                self.skipTest("skip")366        events = []367        result = LoggingResult(events)368        test = Foo("test_die")369        self.assertIs(test.run(result), result)370        self.assertEqual(events,371                         ['startTest', 'addSkip', 'stopTest'])372        self.assertFalse(result.failures)373        self.assertFalse(result.expectedFailures)374        self.assertFalse(result.unexpectedSuccesses)375        self.assertEqual(result.skipped, [(test, "skip")])376        self.assertTrue(result.wasSuccessful())377    def test_skip_doesnt_run_setup(self):378        class Foo(unittest.TestCase):379            wasSetUp = False380            wasTornDown = False381            def setUp(self):382                Foo.wasSetUp = True383            def tornDown(self):384                Foo.wasTornDown = True385            @unittest.skip('testing')386            def test_1(self):387                pass388        result = unittest.TestResult()389        test = Foo("test_1")390        suite = unittest.TestSuite([test])391        self.assertIs(suite.run(result), result)392        self.assertEqual(result.skipped, [(test, "testing")])393        self.assertFalse(Foo.wasSetUp)394        self.assertFalse(Foo.wasTornDown)395    def test_decorated_skip(self):396        def decorator(func):397            def inner(*a):398                return func(*a)399            return inner400        class Foo(unittest.TestCase):401            @decorator402            @unittest.skip('testing')403            def test_1(self):404                pass405        result = unittest.TestResult()406        test = Foo("test_1")407        suite = unittest.TestSuite([test])408        self.assertIs(suite.run(result), result)409        self.assertEqual(result.skipped, [(test, "testing")])410    def test_skip_without_reason(self):411        class Foo(unittest.TestCase):412            @unittest.skip413            def test_1(self):414                pass415        result = unittest.TestResult()416        test = Foo("test_1")417        suite = unittest.TestSuite([test])418        self.assertIs(suite.run(result), result)419        self.assertEqual(result.skipped, [(test, "")])420    def test_debug_skipping(self):421        class Foo(unittest.TestCase):422            def setUp(self):423                events.append("setUp")424            def tearDown(self):425                events.append("tearDown")426            def test1(self):427                self.skipTest('skipping exception')428                events.append("test1")429            @unittest.skip("skipping decorator")430            def test2(self):431                events.append("test2")432        events = []433        test = Foo("test1")434        with self.assertRaises(unittest.SkipTest) as cm:435            test.debug()436        self.assertIn("skipping exception", str(cm.exception))437        self.assertEqual(events, ["setUp"])438        events = []439        test = Foo("test2")440        with self.assertRaises(unittest.SkipTest) as cm:441            test.debug()442        self.assertIn("skipping decorator", str(cm.exception))443        self.assertEqual(events, [])444    def test_debug_skipping_class(self):445        @unittest.skip("testing")446        class Foo(unittest.TestCase):447            def setUp(self):448                events.append("setUp")449            def tearDown(self):450                events.append("tearDown")451            def test(self):452                events.append("test")453        events = []454        test = Foo("test")455        with self.assertRaises(unittest.SkipTest) as cm:456            test.debug()457        self.assertIn("testing", str(cm.exception))458        self.assertEqual(events, [])459    def test_debug_skipping_subtests(self):460        class Foo(unittest.TestCase):461            def setUp(self):462                events.append("setUp")463            def tearDown(self):464                events.append("tearDown")465            def test(self):466                with self.subTest(a=1):467                    events.append('subtest')468                    self.skipTest("skip subtest")469                    events.append('end subtest')470                events.append('end test')471        events = []472        result = LoggingResult(events)473        test = Foo("test")474        with self.assertRaises(unittest.SkipTest) as cm:475            test.debug()476        self.assertIn("skip subtest", str(cm.exception))477        self.assertEqual(events, ['setUp', 'subtest'])478if __name__ == "__main__":...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
