diff --git a/Lib/test/test_bisect.py b/Lib/test/test_bisect.py
index 7357f53..f30114d 100644
--- a/Lib/test/test_bisect.py
+++ b/Lib/test/test_bisect.py
@@ -192,24 +192,14 @@
 
 """
 
-#==============================================================================
-
-def makeAllTests():
-    suite = unittest.TestSuite()
-    for klass in (TestBisect,
-                  TestInsort
-                  ):
-        suite.addTest(unittest.makeSuite(klass))
-    return suite
-
 #------------------------------------------------------------------------------
 
 __test__ = {'libreftest' : libreftest}
 
 def test_main(verbose=None):
     from test import test_bisect
-    suite = makeAllTests()
-    test_support.run_suite(suite)
+    test_support.run_classtests(TestBisect,
+                                TestInsort)
     test_support.run_doctest(test_bisect, verbose)
 
 if __name__ == "__main__":
diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py
index d9fb887..fe99b85 100644
--- a/Lib/test/test_bool.py
+++ b/Lib/test/test_bool.py
@@ -331,9 +331,7 @@
         self.assertEqual(cPickle.dumps(False, True), "I00\n.")
 
 def test_main():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(BoolTest))
-    test_support.run_suite(suite)
+    test_support.run_classtests(BoolTest)
 
 if __name__ == "__main__":
     test_main()
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index cf67ef8..94c0bfb 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -9,7 +9,7 @@
 warnings.filterwarnings("ignore", "tempnam", RuntimeWarning, __name__)
 warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning, __name__)
 
-from test.test_support import TESTFN, run_suite
+from test.test_support import TESTFN, run_classtests
 
 class TemporaryFileTests(unittest.TestCase):
     def setUp(self):
@@ -282,14 +282,10 @@
         os.rmdir(TESTFN)
 
 def test_main():
-    suite = unittest.TestSuite()
-    for cls in (TemporaryFileTests,
-                StatAttributeTests,
-                EnvironTests,
-                WalkTests,
-               ):
-        suite.addTest(unittest.makeSuite(cls))
-    run_suite(suite)
+    run_classtests(TemporaryFileTests,
+                   StatAttributeTests,
+                   EnvironTests,
+                   WalkTests)
 
 if __name__ == "__main__":
     test_main()
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index c61e194..56b60cc 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -233,6 +233,12 @@
     """Run tests from a unittest.TestCase-derived class."""
     run_suite(unittest.makeSuite(testclass), testclass)
 
+def run_classtests(*classnames):
+    suite = unittest.TestSuite()
+    for cls in classnames:
+        suite.addTest(unittest.makeSuite(cls))
+    run_suite(suite)
+
 
 #=======================================================================
 # doctest driver.
