diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py
index d533ce1..0fdef11 100644
--- a/Lib/idlelib/CallTips.py
+++ b/Lib/idlelib/CallTips.py
@@ -223,4 +223,6 @@
     tests = (t1, t2, t3, t4, t5, t6, t7,
              TC, tc.t1, tc.t2, tc.t3, tc.t4, tc.t5, tc.t6, tc.t7)
 
-    test(tests)
+    # test(tests)
+    from unittest import main
+    main('idlelib.idle_test.test_calltips', verbosity=2, exit=False)
diff --git a/Lib/idlelib/PathBrowser.py b/Lib/idlelib/PathBrowser.py
index d88a48e..0f4fb3e 100644
--- a/Lib/idlelib/PathBrowser.py
+++ b/Lib/idlelib/PathBrowser.py
@@ -92,4 +92,5 @@
         mainloop()
 
 if __name__ == "__main__":
-    main()
+    from unittest import main
+    main('idlelib.idle_test.test_pathbrowser', verbosity=2, exit=False)
diff --git a/Lib/idlelib/idle_test/README.txt b/Lib/idlelib/idle_test/README.txt
new file mode 100644
index 0000000..1919f2f
--- /dev/null
+++ b/Lib/idlelib/idle_test/README.txt
@@ -0,0 +1,63 @@
+README FOR IDLE TESTS IN IDLELIB.IDLE_TEST
+
+The idle directory, idlelib, has over 60 xyz.py files. The idle_test
+subdirectory should contain a test_xyy.py for each one. (For test modules,
+make 'xyz' lower case.) Each should start with the following cut-paste
+template, with the blanks after after '.'. 'as', and '_' filled in.
+---
+import unittest
+import idlelib. as
+
+class Test_(unittest.TestCase):
+
+    def test_(self):
+
+if __name__ == '__main__':
+    unittest.main(verbosity=2, exit=2)
+---
+Idle tests are run with unittest; do not use regrtest's test_main.
+
+Once test_xyy is written, the following should go at the end of xyy.py,
+with xyz (lowercased) added after 'test_'.
+---
+if __name__ == "__main__":
+    import unittest
+    unittest.main('idlelib.idle_test.test_', verbosity=2, exit=False)
+---
+
+In Idle, pressing F5 in an editor window with either xyz.py or test_xyz.py
+loaded will then run the test with the version of Python running Idle and
+tracebacks will appear in the Shell window. The options are appropriate for
+developers running (as opposed to importing) either type of file during
+development: verbosity=2 lists all test_y methods; exit=False avoids a
+spurious sys.exit traceback when running in Idle. The following command
+lines also run test_xyz.py
+
+python -m idlelib.xyz  # With the capitalization of the xyz module
+python -m unittest -v idlelib.idle_test.test_xyz
+
+To run all idle tests either interactively ('>>>', with unittest imported)
+or from a command line, use one of the following.
+
+>>> unittest.main('idlelib.idle_test', verbosity=2, exit=False)
+python -m unittest -v idlelib.idle_test
+python -m test.test_idle
+python -m test test_idle
+
+The idle tests are 'discovered' in idlelib.idle_test.__init__.load_tests,
+which is also imported into test.test_idle. Normally, neither file should be
+changed when working on individual test modules. The last command runs runs
+unittest indirectly through regrtest. The same happens when the entire test
+suite is run with 'python -m test'. So it must work for buildbots to stay green.
+
+To run an individual Testcase or test method, extend the
+dotted name given to unittest on the command line.
+
+python -m unittest -v idlelib.idle_test.text_xyz.Test_case.test_meth
+
+To disable test/test_idle.py, there are at least two choices.
+a. Comment out 'load_tests' line, no no tests are discovered (simple and safe);
+Running no tests passes, so there is no indication that nothing was run.
+b.Before that line, make module an unexpected skip for regrtest with
+import unittest; raise unittest.SkipTest('skip for buildbots')
+When run directly with unittest, this causes a normal exit and traceback.
\ No newline at end of file
diff --git a/Lib/idlelib/idle_test/__init__.py b/Lib/idlelib/idle_test/__init__.py
new file mode 100644
index 0000000..1bc9536
--- /dev/null
+++ b/Lib/idlelib/idle_test/__init__.py
@@ -0,0 +1,9 @@
+from os.path import dirname
+
+def load_tests(loader, standard_tests, pattern):
+    this_dir = dirname(__file__)
+    top_dir = dirname(dirname(this_dir))
+    package_tests = loader.discover(start_dir=this_dir, pattern='test*.py',
+                                    top_level_dir=top_dir)
+    standard_tests.addTests(package_tests)
+    return standard_tests
diff --git a/Lib/idlelib/idle_test/test_calltips.py b/Lib/idlelib/idle_test/test_calltips.py
new file mode 100644
index 0000000..1733d39
--- /dev/null
+++ b/Lib/idlelib/idle_test/test_calltips.py
@@ -0,0 +1,14 @@
+import unittest
+import idlelib.CallTips as ct
+CTi = ct.CallTips()
+
+class Test_get_entity(unittest.TestCase):
+    # In 3.x, get_entity changed from 'instance method' to module function
+    # since 'self' not used. Use dummy instance until change 2.7 also.
+    def test_bad_entity(self):
+        self.assertIsNone(CTi.get_entity('1/0'))
+    def test_good_entity(self):
+        self.assertIs(CTi.get_entity('int'), int)
+
+if __name__ == '__main__':
+    unittest.main(verbosity=2, exit=False)
diff --git a/Lib/idlelib/idle_test/test_pathbrowser.py b/Lib/idlelib/idle_test/test_pathbrowser.py
new file mode 100644
index 0000000..7ad7c97
--- /dev/null
+++ b/Lib/idlelib/idle_test/test_pathbrowser.py
@@ -0,0 +1,12 @@
+import unittest
+import idlelib.PathBrowser as PathBrowser
+
+class PathBrowserTest(unittest.TestCase):
+
+    def test_DirBrowserTreeItem(self):
+        # Issue16226 - make sure that getting a sublist works
+        d = PathBrowser.DirBrowserTreeItem('')
+        d.GetSubList()
+
+if __name__ == '__main__':
+    unittest.main(verbosity=2, exit=False)
diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py
new file mode 100644
index 0000000..c48dccb
--- /dev/null
+++ b/Lib/test/test_idle.py
@@ -0,0 +1,17 @@
+# Skip test if _tkinter or _thread wasn't built or idlelib was deleted.
+try:
+    import Tkinter
+    import threading  # imported by PyShell, imports _thread
+    import idlelib.idle_test as idletest
+except ImportError:
+    import unittest
+    raise unittest.SkipTest
+
+# Without test_main present, regrtest.runtest_inner (line1219) calls
+# unittest.TestLoader().loadTestsFromModule(this_module) which calls
+# load_tests() if it finds it. (Unittest.main does the same.)
+load_tests = idletest.load_tests
+
+if __name__ == '__main__':
+    import unittest
+    unittest.main(verbosity=2, exit=False)
