diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 955e551..9f480a3 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -132,6 +132,7 @@
 import time
 import traceback
 import warnings
+import unittest
 
 # I see no other way to suppress these warnings;
 # putting them in test_grammar.py has no effect:
@@ -567,7 +568,7 @@
             print test, "skipped --", msg
             sys.stdout.flush()
         return -2
-    except (ImportError, test_support.TestSkipped), msg:
+    except (ImportError, unittest.SkipTest), msg:
         if not quiet:
             print test, "skipped --", msg
             sys.stdout.flush()
diff --git a/Lib/test/test__locale.py b/Lib/test/test__locale.py
index 69fc625..35001dc 100644
--- a/Lib/test/test__locale.py
+++ b/Lib/test/test__locale.py
@@ -1,4 +1,4 @@
-from test.test_support import verbose, TestSkipped, run_unittest
+from test.test_support import verbose, SkipTest, run_unittest
 from _locale import (setlocale, LC_NUMERIC, RADIXCHAR, THOUSEP, nl_langinfo,
                     localeconv, Error)
 import unittest
@@ -7,7 +7,7 @@
 if uname()[0] == "Darwin":
     maj, min, mic = [int(part) for part in uname()[2].split(".")]
     if (maj, min, mic) < (8, 0, 0):
-        raise TestSkipped("locale support broken for OS X < 10.4")
+        raise SkipTest("locale support broken for OS X < 10.4")
 
 candidate_locales = ['es_UY', 'fr_FR', 'fi_FI', 'es_CO', 'pt_PT', 'it_IT',
     'et_EE', 'es_PY', 'no_NO', 'nl_NL', 'lv_LV', 'el_GR', 'be_BY', 'fr_BE',
diff --git a/Lib/test/test_commands.py b/Lib/test/test_commands.py
index d899d66..530d9e3 100644
--- a/Lib/test/test_commands.py
+++ b/Lib/test/test_commands.py
@@ -9,7 +9,7 @@
 warnings.filterwarnings('ignore', r".*commands.getstatus.. is deprecated",
                         DeprecationWarning)
 
-from test.test_support import TestSkipped, run_unittest, reap_children
+from test.test_support import SkipTest, run_unittest, reap_children
 from commands import *
 
 # The module says:
@@ -19,7 +19,7 @@
 # I'll take the comment as given, and skip this suite.
 
 if os.name != 'posix':
-    raise TestSkipped('Not posix; skipping test_commands')
+    raise SkipTest('Not posix; skipping test_commands')
 
 
 class CommandTests(unittest.TestCase):
diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py
index d1b80f8..9fe344a 100644
--- a/Lib/test/test_curses.py
+++ b/Lib/test/test_curses.py
@@ -16,16 +16,16 @@
 # 'curses' resource be given on the regrtest command line using the -u
 # option.  If not available, nothing after this line will be executed.
 
-from test.test_support import requires, TestSkipped
+from test.test_support import requires, SkipTest
 requires('curses')
 
 # XXX: if newterm was supported we could use it instead of initscr and not exit
 term = os.environ.get('TERM')
 if not term or term == 'unknown':
-    raise TestSkipped, "$TERM=%r, calling initscr() may cause exit" % term
+    raise SkipTest, "$TERM=%r, calling initscr() may cause exit" % term
 
 if sys.platform == "cygwin":
-    raise TestSkipped("cygwin's curses mostly just hangs")
+    raise SkipTest("cygwin's curses mostly just hangs")
 
 def window_funcs(stdscr):
     "Test the methods of windows"
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index bb5103c..131c893 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -31,7 +31,7 @@
 import unittest
 from decimal import *
 import numbers
-from test.test_support import (TestSkipped, run_unittest, run_doctest,
+from test.test_support import (SkipTest, run_unittest, run_doctest,
                                is_resource_enabled)
 import random
 try:
@@ -194,7 +194,7 @@
     def eval_file(self, file):
         global skip_expected
         if skip_expected:
-            raise TestSkipped
+            raise SkipTest
             return
         for line in open(file).xreadlines():
             line = line.replace('\r\n', '').replace('\n', '')
diff --git a/Lib/test/test_dl.py b/Lib/test/test_dl.py
index c04bc1b..89f999d 100755
--- a/Lib/test/test_dl.py
+++ b/Lib/test/test_dl.py
@@ -2,7 +2,7 @@
 """Test dlmodule.c
    Roger E. Masse  revised strategy by Barry Warsaw
 """
-from test.test_support import verbose,TestSkipped, import_module
+from test.test_support import verbose,SkipTest, import_module
 dl = import_module('dl', deprecated=True)
 
 sharedlibs = [
@@ -31,7 +31,7 @@
                 print 'worked!'
             break
     else:
-        raise TestSkipped, 'Could not open any shared libraries'
+        raise SkipTest, 'Could not open any shared libraries'
 
 
 if __name__ == '__main__':
diff --git a/Lib/test/test_epoll.py b/Lib/test/test_epoll.py
index ab1756c..2362ad5 100644
--- a/Lib/test/test_epoll.py
+++ b/Lib/test/test_epoll.py
@@ -31,13 +31,13 @@
 
 from test import test_support
 if not hasattr(select, "epoll"):
-    raise test_support.TestSkipped("test works only on Linux 2.6")
+    raise unittest.SkipTest("test works only on Linux 2.6")
 
 try:
     select.epoll()
 except IOError, e:
     if e.errno == errno.ENOSYS:
-        raise test_support.TestSkipped("kernel doesn't support epoll()")
+        raise unittest.SkipTest("kernel doesn't support epoll()")
 
 class TestEPoll(unittest.TestCase):
 
diff --git a/Lib/test/test_fork1.py b/Lib/test/test_fork1.py
index e64e398..4131d37 100644
--- a/Lib/test/test_fork1.py
+++ b/Lib/test/test_fork1.py
@@ -4,12 +4,12 @@
 import os
 import time
 from test.fork_wait import ForkWait
-from test.test_support import TestSkipped, run_unittest, reap_children
+from test.test_support import SkipTest, run_unittest, reap_children
 
 try:
     os.fork
 except AttributeError:
-    raise TestSkipped, "os.fork not defined -- skipping test_fork1"
+    raise SkipTest, "os.fork not defined -- skipping test_fork1"
 
 class ForkTest(ForkWait):
     def wait_impl(self, cpid):
diff --git a/Lib/test/test_gl.py b/Lib/test/test_gl.py
index 20fd776..ceff597 100755
--- a/Lib/test/test_gl.py
+++ b/Lib/test/test_gl.py
@@ -3,7 +3,7 @@
     taken mostly from the documentation.
     Roger E. Masse
 """
-from test.test_support import verbose, TestSkipped
+from test.test_support import verbose, SkipTest
 import gl, GL, time
 
 glattrs = ['RGBcolor', 'RGBcursor', 'RGBmode', 'RGBrange', 'RGBwritemask',
@@ -87,7 +87,7 @@
     try:
         display = os.environ['DISPLAY']
     except:
-        raise TestSkipped, "No $DISPLAY -- skipping gl test"
+        raise SkipTest, "No $DISPLAY -- skipping gl test"
 
     # touch all the attributes of gl without doing anything
     if verbose:
diff --git a/Lib/test/test_ioctl.py b/Lib/test/test_ioctl.py
index d46b10d..cc79e1f 100644
--- a/Lib/test/test_ioctl.py
+++ b/Lib/test/test_ioctl.py
@@ -1,18 +1,18 @@
 import unittest
-from test.test_support import TestSkipped, run_unittest
+from test.test_support import SkipTest, run_unittest
 import os, struct
 try:
     import fcntl, termios
 except ImportError:
-    raise TestSkipped("No fcntl or termios module")
+    raise SkipTest("No fcntl or termios module")
 if not hasattr(termios,'TIOCGPGRP'):
-    raise TestSkipped("termios module doesn't have TIOCGPGRP")
+    raise SkipTest("termios module doesn't have TIOCGPGRP")
 
 try:
     tty = open("/dev/tty", "r")
     tty.close()
 except IOError:
-    raise TestSkipped("Unable to open /dev/tty")
+    raise SkipTest("Unable to open /dev/tty")
 
 try:
     import pty
@@ -41,7 +41,7 @@
 
     def test_ioctl_signed_unsigned_code_param(self):
         if not pty:
-            raise TestSkipped('pty module required')
+            raise SkipTest('pty module required')
         mfd, sfd = pty.openpty()
         try:
             if termios.TIOCSWINSZ < 0:
diff --git a/Lib/test/test_kqueue.py b/Lib/test/test_kqueue.py
index 05c1013..6216850 100644
--- a/Lib/test/test_kqueue.py
+++ b/Lib/test/test_kqueue.py
@@ -10,7 +10,7 @@
 
 from test import test_support
 if not hasattr(select, "kqueue"):
-    raise test_support.TestSkipped("test works only on BSD")
+    raise unittest.SkipTest("test works only on BSD")
 
 class TestKQueue(unittest.TestCase):
     def test_create_queue(self):
diff --git a/Lib/test/test_largefile.py b/Lib/test/test_largefile.py
index 1da0e7d..783881b 100644
--- a/Lib/test/test_largefile.py
+++ b/Lib/test/test_largefile.py
@@ -6,7 +6,7 @@
 import sys
 import unittest
 from test.test_support import run_unittest, TESTFN, verbose, requires, \
-                              TestSkipped, unlink
+                              SkipTest, unlink
 
 try:
     import signal
@@ -104,7 +104,7 @@
             # this is already decided before start running the test suite
             # but we do it anyway for extra protection
             if not hasattr(f, 'truncate'):
-                raise TestSkipped, "open().truncate() not available on this system"
+                raise SkipTest, "open().truncate() not available on this system"
             f.seek(0, 2)
             # else we've lost track of the true size
             self.assertEqual(f.tell(), size+1)
@@ -155,7 +155,7 @@
         except (IOError, OverflowError):
             f.close()
             unlink(TESTFN)
-            raise TestSkipped, "filesystem does not have largefile support"
+            raise SkipTest, "filesystem does not have largefile support"
         else:
             f.close()
     suite = unittest.TestSuite()
diff --git a/Lib/test/test_linuxaudiodev.py b/Lib/test/test_linuxaudiodev.py
index 813df6f..c13a02e 100644
--- a/Lib/test/test_linuxaudiodev.py
+++ b/Lib/test/test_linuxaudiodev.py
@@ -1,7 +1,7 @@
 from test import test_support
 test_support.requires('audio')
 
-from test.test_support import findfile, TestSkipped, run_unittest
+from test.test_support import findfile, SkipTest, run_unittest
 
 import errno
 linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True)
@@ -89,7 +89,7 @@
         dsp = linuxaudiodev.open('w')
     except linuxaudiodev.error, msg:
         if msg.args[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):
-            raise TestSkipped(msg)
+            raise SkipTest(msg)
         raise
     dsp.close()
     run_unittest(LinuxAudioDevTests)
diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
index 2612c79..84865f6 100644
--- a/Lib/test/test_locale.py
+++ b/Lib/test/test_locale.py
@@ -1,4 +1,4 @@
-from test.test_support import run_unittest, verbose, TestSkipped
+from test.test_support import run_unittest, verbose, SkipTest
 import unittest
 import locale
 import sys
@@ -10,7 +10,7 @@
 def get_enUS_locale():
     global enUS_locale
     if sys.platform == 'darwin':
-        raise TestSkipped("Locale support on MacOSX is minimal")
+        raise SkipTest("Locale support on MacOSX is minimal")
     if sys.platform.startswith("win"):
         tlocs = ("En", "English")
     else:
@@ -23,7 +23,7 @@
             continue
         break
     else:
-        raise TestSkipped(
+        raise SkipTest(
             "Test locale not supported (tried %s)" % (', '.join(tlocs)))
     enUS_locale = tloc
     locale.setlocale(locale.LC_NUMERIC, oldlocale)
@@ -355,10 +355,10 @@
         TestCNumberFormatting,
         TestFrFRNumberFormatting,
     ]
-    # TestSkipped can't be raised inside unittests, handle it manually instead
+    # SkipTest can't be raised inside unittests, handle it manually instead
     try:
         get_enUS_locale()
-    except TestSkipped as e:
+    except SkipTest as e:
         if verbose:
             print "Some tests will be disabled: %s" % e
     else:
diff --git a/Lib/test/test_macostools.py b/Lib/test/test_macostools.py
index 5c83d28..6110ce3 100644
--- a/Lib/test/test_macostools.py
+++ b/Lib/test/test_macostools.py
@@ -93,7 +93,7 @@
 def test_main():
     # Skip on wide unicode
     if len(u'\0'.encode('unicode-internal')) == 4:
-        raise test_support.TestSkipped("test_macostools is broken in USC4")
+        raise unittest.SkipTest("test_macostools is broken in USC4")
     test_support.run_unittest(TestMacostools)
 
 
diff --git a/Lib/test/test_mhlib.py b/Lib/test/test_mhlib.py
index 04571ea..8dbe2c4 100644
--- a/Lib/test/test_mhlib.py
+++ b/Lib/test/test_mhlib.py
@@ -7,7 +7,7 @@
 ###      mhlib.  It should.
 
 import unittest
-from test.test_support import run_unittest, TESTFN, TestSkipped, import_module
+from test.test_support import run_unittest, TESTFN, SkipTest, import_module
 import os, StringIO
 import sys
 mhlib = import_module('mhlib', deprecated=True)
@@ -21,7 +21,7 @@
     # link counts, and that causes test_listfolders() here to get back
     # an empty list from its call of listallfolders().
     # The other tests here pass on Windows.
-    raise TestSkipped("skipped on %s -- " % sys.platform +
+    raise SkipTest("skipped on %s -- " % sys.platform +
                       "too many Unix assumptions")
 
 _mhroot = TESTFN+"_MH"
diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
index f1f1378..f26b83f 100644
--- a/Lib/test/test_minidom.py
+++ b/Lib/test/test_minidom.py
@@ -4,7 +4,7 @@
 import sys
 import pickle
 from StringIO import StringIO
-from test.test_support import verbose, run_unittest, TestSkipped
+from test.test_support import verbose, run_unittest, SkipTest
 import unittest
 
 import xml.dom
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index 33debfb..0ec6a90 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -23,8 +23,8 @@
 try:
     import multiprocessing.synchronize
 except ImportError, e:
-    from test.test_support import TestSkipped
-    raise TestSkipped(e)
+    from test.test_support import SkipTest
+    raise SkipTest(e)
 
 import multiprocessing.dummy
 import multiprocessing.connection
@@ -1812,8 +1812,8 @@
         try:
             lock = multiprocessing.RLock()
         except OSError:
-            from test.test_support import TestSkipped
-            raise TestSkipped("OSError raises on RLock creation, see issue 3111!")
+            from test.test_support import SkipTest
+            raise SkipTest("OSError raises on RLock creation, see issue 3111!")
 
     if run is None:
         from test.test_support import run_unittest as run
diff --git a/Lib/test/test_nis.py b/Lib/test/test_nis.py
index c958d4b..0026953 100644
--- a/Lib/test/test_nis.py
+++ b/Lib/test/test_nis.py
@@ -10,7 +10,7 @@
             # NIS is probably not active, so this test isn't useful
             if test_support.verbose:
                 print "Test Skipped:", msg
-            # Can't raise TestSkipped as regrtest only recognizes the exception
+            # Can't raise SkipTest as regrtest only recognizes the exception
             #   import time.
             return
         try:
diff --git a/Lib/test/test_openpty.py b/Lib/test/test_openpty.py
index 6471f58..d128f61 100644
--- a/Lib/test/test_openpty.py
+++ b/Lib/test/test_openpty.py
@@ -1,10 +1,10 @@
 # Test to see if openpty works. (But don't worry if it isn't available.)
 
 import os, unittest
-from test.test_support import run_unittest, TestSkipped
+from test.test_support import run_unittest, SkipTest
 
 if not hasattr(os, "openpty"):
-    raise TestSkipped, "No openpty() available."
+    raise SkipTest, "No openpty() available."
 
 
 class OpenptyTest(unittest.TestCase):
diff --git a/Lib/test/test_ossaudiodev.py b/Lib/test/test_ossaudiodev.py
index 2a1eba7..cc147b6 100644
--- a/Lib/test/test_ossaudiodev.py
+++ b/Lib/test/test_ossaudiodev.py
@@ -1,7 +1,7 @@
 from test import test_support
 test_support.requires('audio')
 
-from test.test_support import findfile, TestSkipped
+from test.test_support import findfile, SkipTest
 
 import errno
 import ossaudiodev
@@ -45,7 +45,7 @@
             dsp = ossaudiodev.open('w')
         except IOError, msg:
             if msg[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):
-                raise TestSkipped(msg)
+                raise SkipTest(msg)
             raise
 
         # at least check that these methods can be invoked
@@ -162,7 +162,7 @@
         dsp = ossaudiodev.open('w')
     except (ossaudiodev.error, IOError), msg:
         if msg[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):
-            raise TestSkipped(msg)
+            raise SkipTest(msg)
         raise
     dsp.close()
     test_support.run_unittest(__name__)
diff --git a/Lib/test/test_pep277.py b/Lib/test/test_pep277.py
index cb6210b..a61bcdf 100644
--- a/Lib/test/test_pep277.py
+++ b/Lib/test/test_pep277.py
@@ -3,7 +3,7 @@
 import sys, os, unittest
 from test import test_support
 if not os.path.supports_unicode_filenames:
-    raise test_support.TestSkipped, "test works only on NT+"
+    raise unittest.SkipTest, "test works only on NT+"
 
 filenames = [
     'abc',
diff --git a/Lib/test/test_pipes.py b/Lib/test/test_pipes.py
index 0eca8ed..45c9faf 100644
--- a/Lib/test/test_pipes.py
+++ b/Lib/test/test_pipes.py
@@ -2,10 +2,10 @@
 import os
 import string
 import unittest
-from test.test_support import TESTFN, run_unittest, unlink, TestSkipped
+from test.test_support import TESTFN, run_unittest, unlink, SkipTest
 
 if os.name != 'posix':
-    raise TestSkipped('pipes module only works on posix')
+    raise SkipTest('pipes module only works on posix')
 
 TESTFN2 = TESTFN + "2"
 
diff --git a/Lib/test/test_poll.py b/Lib/test/test_poll.py
index fb6cd30..5d01251 100644
--- a/Lib/test/test_poll.py
+++ b/Lib/test/test_poll.py
@@ -1,12 +1,12 @@
 # Test case for the os.poll() function
 
 import os, select, random, unittest
-from test.test_support import TestSkipped, TESTFN, run_unittest
+from test.test_support import SkipTest, TESTFN, run_unittest
 
 try:
     select.poll
 except AttributeError:
-    raise TestSkipped, "select.poll not defined -- skipping test_poll"
+    raise SkipTest, "select.poll not defined -- skipping test_poll"
 
 
 def find_ready_matching(ready, flag):
diff --git a/Lib/test/test_popen2.py b/Lib/test/test_popen2.py
index 023871f..0e0c0f4 100644
--- a/Lib/test/test_popen2.py
+++ b/Lib/test/test_popen2.py
@@ -12,13 +12,13 @@
 import unittest
 import popen2
 
-from test.test_support import TestSkipped, run_unittest, reap_children
+from test.test_support import SkipTest, run_unittest, reap_children
 
 if sys.platform[:4] == 'beos' or sys.platform[:6] == 'atheos':
     #  Locks get messed up or something.  Generally we're supposed
     #  to avoid mixing "posix" fork & exec with native threads, and
     #  they may be right about that after all.
-    raise TestSkipped("popen2() doesn't work on " + sys.platform)
+    raise SkipTest("popen2() doesn't work on " + sys.platform)
 
 # if we don't have os.popen, check that
 # we have os.fork.  if not, skip the test
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 5f40060..864f963 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -5,7 +5,7 @@
 try:
     import posix
 except ImportError:
-    raise test_support.TestSkipped, "posix is not available"
+    raise unittest.SkipTest, "posix is not available"
 
 import time
 import os
@@ -242,10 +242,10 @@
                 os.mkdir(base_path)
                 os.chdir(base_path)
             except:
-#               Just returning nothing instead of the TestSkipped exception,
+#               Just returning nothing instead of the SkipTest exception,
 #               because the test results in Error in that case.
 #               Is that ok?
-#                raise test_support.TestSkipped, "cannot create directory for testing"
+#                raise unittest.SkipTest, "cannot create directory for testing"
                 return
 
             try:
@@ -253,7 +253,7 @@
                     try:
                         os.mkdir(dirname)
                     except:
-                        raise test_support.TestSkipped, "mkdir cannot create directory sufficiently deep for getcwd test"
+                        raise unittest.SkipTest, "mkdir cannot create directory sufficiently deep for getcwd test"
 
                     os.chdir(dirname)
                     try:
diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py
index c00244f..25a04fc 100644
--- a/Lib/test/test_pty.py
+++ b/Lib/test/test_pty.py
@@ -4,7 +4,7 @@
 import os
 import sys
 import signal
-from test.test_support import verbose, TestSkipped, run_unittest
+from test.test_support import verbose, SkipTest, run_unittest
 import unittest
 
 TEST_STRING_1 = "I wish to buy a fish license.\n"
@@ -69,7 +69,7 @@
             debug("Got slave_fd '%d'" % slave_fd)
         except OSError:
             # " An optional feature could not be imported " ... ?
-            raise TestSkipped, "Pseudo-terminals (seemingly) not functional."
+            raise SkipTest, "Pseudo-terminals (seemingly) not functional."
 
         self.assertTrue(os.isatty(slave_fd), 'slave_fd is not a tty')
 
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index 1e368d5..c4f7b1e 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -1,13 +1,13 @@
 import unittest
 import sys
 from test.test_support import (check_warnings, CleanImport,
-                               TestSkipped, run_unittest)
+                               SkipTest, run_unittest)
 import warnings
 
 from contextlib import nested
 
 if not sys.py3kwarning:
-    raise TestSkipped('%s must be run with the -3 flag' % __name__)
+    raise SkipTest('%s must be run with the -3 flag' % __name__)
 
 def reset_module_registry(module):
     try:
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index 64c9cda..ff5c173 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -10,7 +10,7 @@
 import sys, os, time, errno
 
 if sys.platform[:3] in ('win', 'os2') or sys.platform == 'riscos':
-    raise test_support.TestSkipped("Can't test signal on %s" % \
+    raise unittest.SkipTest("Can't test signal on %s" % \
                                    sys.platform)
 
 
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
index 2dfddcd..d44f5b7 100644
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -5,7 +5,7 @@
 
 """
 import unittest
-from test.test_support import TestSkipped, run_unittest, TESTFN
+from test.test_support import SkipTest, run_unittest, TESTFN
 import __builtin__
 import os
 import sys
@@ -17,7 +17,7 @@
 if "site" in sys.modules:
     import site
 else:
-    raise TestSkipped("importation of site.py suppressed")
+    raise SkipTest("importation of site.py suppressed")
 
 if not os.path.isdir(site.USER_SITE):
     # need to add user site directory for tests
diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py
index b8f664f..b0e3ef1 100644
--- a/Lib/test/test_socketserver.py
+++ b/Lib/test/test_socketserver.py
@@ -16,7 +16,7 @@
 import SocketServer
 
 import test.test_support
-from test.test_support import reap_children, verbose, TestSkipped
+from test.test_support import reap_children, verbose, SkipTest
 from test.test_support import TESTFN as TEST_FILE
 
 test.test_support.requires("network")
@@ -247,7 +247,7 @@
 def test_main():
     if imp.lock_held():
         # If the import lock is held, the threads will hang
-        raise TestSkipped("can't run when import lock is held")
+        raise SkipTest("can't run when import lock is held")
 
     test.test_support.run_unittest(SocketServerTest)
 
diff --git a/Lib/test/test_sqlite.py b/Lib/test/test_sqlite.py
index d63bb1d..7eb0f87 100644
--- a/Lib/test/test_sqlite.py
+++ b/Lib/test/test_sqlite.py
@@ -1,9 +1,9 @@
-from test.test_support import run_unittest, TestSkipped
+from test.test_support import run_unittest, SkipTest
 
 try:
     import _sqlite3
 except ImportError:
-    raise TestSkipped('no sqlite available')
+    raise SkipTest('no sqlite available')
 from sqlite3.test import (dbapi, types, userfunctions, py25tests,
                                 factory, transactions, hooks, regression,
                                 dump)
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 5cfe7f1..247ffcd 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -1167,7 +1167,7 @@
 
 def test_main(verbose=False):
     if skip_expected:
-        raise test_support.TestSkipped("No SSL support")
+        raise unittest.SkipTest("No SSL support")
 
     global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT
     CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
diff --git a/Lib/test/test_sunaudiodev.py b/Lib/test/test_sunaudiodev.py
index 2c5e7d4..e4f8fcb 100644
--- a/Lib/test/test_sunaudiodev.py
+++ b/Lib/test/test_sunaudiodev.py
@@ -1,4 +1,4 @@
-from test.test_support import findfile, TestFailed, TestSkipped, import_module
+from test.test_support import findfile, TestFailed, SkipTest, import_module
 sunaudiodev = import_module('sunaudiodev', deprecated=True)
 import os
 
@@ -8,7 +8,7 @@
     audiodev = "/dev/audio"
 
 if not os.path.exists(audiodev):
-    raise TestSkipped("no audio device found!")
+    raise SkipTest("no audio device found!")
 
 def play_sound_file(path):
     fp = open(path, 'r')
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 9398465..0e289c1 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -13,7 +13,7 @@
 import warnings
 import unittest
 
-__all__ = ["Error", "TestFailed", "TestSkipped", "ResourceDenied", "import_module",
+__all__ = ["Error", "TestFailed", "ResourceDenied", "import_module",
            "verbose", "use_resources", "max_memuse", "record_original_stdout",
            "get_original_stdout", "unload", "unlink", "rmtree", "forget",
            "is_resource_enabled", "requires", "find_unused_port", "bind_port",
@@ -33,17 +33,7 @@
 class TestFailed(Error):
     """Test failed."""
 
-class TestSkipped(Error):
-    """Test skipped.
-
-    This can be raised to indicate that a test was deliberatly
-    skipped, but not because a feature wasn't available.  For
-    example, if some resource can't be used, such as the network
-    appears to be unavailable, this should be raised instead of
-    TestFailed.
-    """
-
-class ResourceDenied(TestSkipped):
+class ResourceDenied(SkipTest):
     """Test skipped because it requested a disallowed resource.
 
     This is raised when a test calls requires() for a resource that
@@ -52,7 +42,7 @@
     """
 
 def import_module(name, deprecated=False):
-    """Import the module to be tested, raising TestSkipped if it is not
+    """Import the module to be tested, raising SkipTest if it is not
     available."""
     with warnings.catch_warnings():
         if deprecated:
@@ -61,7 +51,7 @@
         try:
             module = __import__(name, level=0)
         except ImportError:
-            raise TestSkipped("No module named " + name)
+            raise SkipTest("No module named " + name)
         else:
             return module
 
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py
index 74e55d8..792ad5d 100644
--- a/Lib/test/test_tempfile.py
+++ b/Lib/test/test_tempfile.py
@@ -259,7 +259,7 @@
     def test_file_mode(self):
         # _mkstemp_inner creates files with the proper mode
         if not has_stat:
-            return            # ugh, can't use TestSkipped.
+            return            # ugh, can't use SkipTest.
 
         file = self.do_create()
         mode = stat.S_IMODE(os.stat(file.name).st_mode)
@@ -274,7 +274,7 @@
     def test_noinherit(self):
         # _mkstemp_inner file handles are not inherited by child processes
         if not has_spawnl:
-            return            # ugh, can't use TestSkipped.
+            return            # ugh, can't use SkipTest.
 
         if test_support.verbose:
             v="v"
@@ -312,7 +312,7 @@
     def test_textmode(self):
         # _mkstemp_inner can create files in text mode
         if not has_textmode:
-            return            # ugh, can't use TestSkipped.
+            return            # ugh, can't use SkipTest.
 
         self.do_create(bin=0).write("blat\n")
         # XXX should test that the file really is a text file
@@ -476,7 +476,7 @@
     def test_mode(self):
         # mkdtemp creates directories with the proper mode
         if not has_stat:
-            return            # ugh, can't use TestSkipped.
+            return            # ugh, can't use SkipTest.
 
         dir = self.do_create()
         try:
diff --git a/Lib/test/test_threaded_import.py b/Lib/test/test_threaded_import.py
index 602ad2a..dc88a8b 100644
--- a/Lib/test/test_threaded_import.py
+++ b/Lib/test/test_threaded_import.py
@@ -6,7 +6,7 @@
 # randrange, and then Python hangs.
 
 import thread
-from test.test_support import verbose, TestSkipped, TestFailed
+from test.test_support import verbose, SkipTest, TestFailed
 
 critical_section = thread.allocate_lock()
 done = thread.allocate_lock()
@@ -56,7 +56,7 @@
     import imp
     if imp.lock_held():
         # This triggers on, e.g., from test import autotest.
-        raise TestSkipped("can't run when import lock is held")
+        raise SkipTest("can't run when import lock is held")
 
     done.acquire()
     for N in (20, 50) * 3:
diff --git a/Lib/test/test_threadsignals.py b/Lib/test/test_threadsignals.py
index 1f10fe7..b2847d8 100644
--- a/Lib/test/test_threadsignals.py
+++ b/Lib/test/test_threadsignals.py
@@ -5,10 +5,10 @@
 import signal
 import os
 import sys
-from test.test_support import run_unittest, TestSkipped
+from test.test_support import run_unittest, SkipTest
 
 if sys.platform[:3] in ('win', 'os2') or sys.platform=='riscos':
-    raise TestSkipped, "Can't test signal on %s" % sys.platform
+    raise SkipTest, "Can't test signal on %s" % sys.platform
 
 process_pid = os.getpid()
 signalled_all=thread.allocate_lock()
diff --git a/Lib/test/test_tk.py b/Lib/test/test_tk.py
index e1f9c5b..dedda0d 100644
--- a/Lib/test/test_tk.py
+++ b/Lib/test/test_tk.py
@@ -7,7 +7,7 @@
     Tkinter.Button()
 except Tkinter.TclError, msg:
     # assuming tk is not available
-    raise test_support.TestSkipped("tk not available: %s" % msg)
+    raise unittest.SkipTest("tk not available: %s" % msg)
 
 this_dir = os.path.dirname(os.path.abspath(__file__))
 lib_tk_test = os.path.abspath(os.path.join(this_dir, os.path.pardir,
diff --git a/Lib/test/test_ttk_guionly.py b/Lib/test/test_ttk_guionly.py
index 6691b88..a800d62 100644
--- a/Lib/test/test_ttk_guionly.py
+++ b/Lib/test/test_ttk_guionly.py
@@ -8,7 +8,7 @@
     ttk.Button()
 except TclError, msg:
     # assuming ttk is not available
-    raise test_support.TestSkipped("ttk not available: %s" % msg)
+    raise unittest.SkipTest("ttk not available: %s" % msg)
 
 this_dir = os.path.dirname(os.path.abspath(__file__))
 lib_tk_test = os.path.abspath(os.path.join(this_dir, os.path.pardir,
diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py
index 305f98b..d9a810d 100644
--- a/Lib/test/test_unicode_file.py
+++ b/Lib/test/test_unicode_file.py
@@ -5,14 +5,14 @@
 import unicodedata
 
 import unittest
-from test.test_support import run_unittest, TestSkipped, TESTFN_UNICODE
+from test.test_support import run_unittest, SkipTest, TESTFN_UNICODE
 from test.test_support import TESTFN_ENCODING, TESTFN_UNICODE_UNENCODEABLE
 try:
     TESTFN_ENCODED = TESTFN_UNICODE.encode(TESTFN_ENCODING)
 except (UnicodeError, TypeError):
     # Either the file system encoding is None, or the file name
     # cannot be encoded in the file system encoding.
-    raise TestSkipped("No Unicode filesystem semantics on this platform.")
+    raise SkipTest("No Unicode filesystem semantics on this platform.")
 
 if TESTFN_ENCODED.decode(TESTFN_ENCODING) != TESTFN_UNICODE:
     # The file system encoding does not support Latin-1
@@ -26,10 +26,10 @@
             # MBCS will not report the error properly
             raise UnicodeError, "mbcs encoding problem"
     except (UnicodeError, TypeError):
-        raise TestSkipped("Cannot find a suiteable filename.")
+        raise SkipTest("Cannot find a suiteable filename.")
 
 if TESTFN_ENCODED.decode(TESTFN_ENCODING) != TESTFN_UNICODE:
-    raise TestSkipped("Cannot find a suitable filename.")
+    raise SkipTest("Cannot find a suitable filename.")
 
 def remove_if_exists(filename):
     if os.path.exists(filename):
diff --git a/Lib/test/test_univnewlines.py b/Lib/test/test_univnewlines.py
index d6bd646..370a4b7 100644
--- a/Lib/test/test_univnewlines.py
+++ b/Lib/test/test_univnewlines.py
@@ -5,7 +5,7 @@
 from test import test_support
 
 if not hasattr(sys.stdin, 'newlines'):
-    raise test_support.TestSkipped, \
+    raise unittest.SkipTest, \
         "This Python does not have universal newline support"
 
 FATX = 'x' * (2**14)
diff --git a/Lib/test/test_wait3.py b/Lib/test/test_wait3.py
index 9de64b2..474a15b 100644
--- a/Lib/test/test_wait3.py
+++ b/Lib/test/test_wait3.py
@@ -4,17 +4,17 @@
 import os
 import time
 from test.fork_wait import ForkWait
-from test.test_support import TestSkipped, run_unittest, reap_children
+from test.test_support import SkipTest, run_unittest, reap_children
 
 try:
     os.fork
 except AttributeError:
-    raise TestSkipped, "os.fork not defined -- skipping test_wait3"
+    raise SkipTest, "os.fork not defined -- skipping test_wait3"
 
 try:
     os.wait3
 except AttributeError:
-    raise TestSkipped, "os.wait3 not defined -- skipping test_wait3"
+    raise SkipTest, "os.wait3 not defined -- skipping test_wait3"
 
 class Wait3Test(ForkWait):
     def wait_impl(self, cpid):
diff --git a/Lib/test/test_wait4.py b/Lib/test/test_wait4.py
index 9f7fc14..9a94d7b 100644
--- a/Lib/test/test_wait4.py
+++ b/Lib/test/test_wait4.py
@@ -4,17 +4,17 @@
 import os
 import time
 from test.fork_wait import ForkWait
-from test.test_support import TestSkipped, run_unittest, reap_children
+from test.test_support import SkipTest, run_unittest, reap_children
 
 try:
     os.fork
 except AttributeError:
-    raise TestSkipped, "os.fork not defined -- skipping test_wait4"
+    raise SkipTest, "os.fork not defined -- skipping test_wait4"
 
 try:
     os.wait4
 except AttributeError:
-    raise TestSkipped, "os.wait4 not defined -- skipping test_wait4"
+    raise SkipTest, "os.wait4 not defined -- skipping test_wait4"
 
 class Wait4Test(ForkWait):
     def wait_impl(self, cpid):
