import sys
import unittest
class SkippingExample(unittest.TestCase):
@unittest.skip("testing skipping")
def test_skip_me(self):
self.fail("shouldn't happen")
def test_normal(self):
self.assertEqual(1, 1)
@unittest.skipIf(sys.version_info < (2, 6),
"not supported in this veresion")
def test_show_skip_if(self):
# testing some things here
pass
@unittest.expectedFailure
def test_expected_failure(self):
self.fail("this should happen unfortunately")
# Yes, you can skip whole classes, too!
@unittest.skip("classing skipping")
class CompletelySkippedTest(unittest.TestCase):
def test_not_run_at_all(self):
self.fail("shouldn't happen")
if __name__ == "__main__":
unittest.main()
Running it in verbose mode gives:
__main__.CompletelySkippedTest ... skipped 'classing skipping'
test_expected_failure (__main__.SkippingExample) ... expected failure
test_normal (__main__.SkippingExample) ... ok
test_show_skip_if (__main__.SkippingExample) ... ok
test_skip_me (__main__.SkippingExample) ... skipped 'testing skipping'
----------------------------------------------------------------------
Ran 5 tests in 0.010s
OK (skipped=2, expected failures=1)
I have high hopes for this and Python's regression tests. Hopefully it will simplify the ugly system of test skipping we have now. It should also help us pacify other implementations who want CPython implementation detail tests skipped.