#17303: test_future* now work with unittest test discovery.  Patch by Zachary Ware.
diff --git a/Lib/test/test_future.py b/Lib/test/test_future.py
index 3a25eb1..a0c156f 100644
--- a/Lib/test/test_future.py
+++ b/Lib/test/test_future.py
@@ -13,18 +13,18 @@
 class FutureTest(unittest.TestCase):
 
     def test_future1(self):
-        support.unload('future_test1')
-        from test import future_test1
-        self.assertEqual(future_test1.result, 6)
+        with support.CleanImport('future_test1'):
+            from test import future_test1
+            self.assertEqual(future_test1.result, 6)
 
     def test_future2(self):
-        support.unload('future_test2')
-        from test import future_test2
-        self.assertEqual(future_test2.result, 6)
+        with support.CleanImport('future_test2'):
+            from test import future_test2
+            self.assertEqual(future_test2.result, 6)
 
     def test_future3(self):
-        support.unload('test_future3')
-        from test import test_future3
+        with support.CleanImport('test_future3'):
+            from test import test_future3
 
     def test_badfuture3(self):
         try:
@@ -103,8 +103,8 @@
             self.fail("syntax error didn't occur")
 
     def test_multiple_features(self):
-        support.unload("test.test_future5")
-        from test import test_future5
+        with support.CleanImport("test.test_future5"):
+            from test import test_future5
 
     def test_unicode_literals_exec(self):
         scope = {}
@@ -112,8 +112,6 @@
         self.assertIsInstance(scope["x"], str)
 
 
-def test_main():
-    support.run_unittest(FutureTest)
 
 if __name__ == "__main__":
-    test_main()
+    unittest.main()
diff --git a/Lib/test/test_future3.py b/Lib/test/test_future3.py
index b1552a5..09f1c78 100644
--- a/Lib/test/test_future3.py
+++ b/Lib/test/test_future3.py
@@ -2,7 +2,6 @@
 from __future__ import division
 
 import unittest
-from test import support
 
 x = 2
 def nester():
@@ -23,8 +22,5 @@
     def test_nested_scopes(self):
         self.assertEqual(nester(), 3)
 
-def test_main():
-    support.run_unittest(TestFuture)
-
 if __name__ == "__main__":
-    test_main()
+    unittest.main()
diff --git a/Lib/test/test_future4.py b/Lib/test/test_future4.py
index c32f27f..413dd4d 100644
--- a/Lib/test/test_future4.py
+++ b/Lib/test/test_future4.py
@@ -1,10 +1,6 @@
 from __future__ import unicode_literals
 
 import unittest
-from test import support
-
-def test_main():
-    pass
 
 if __name__ == "__main__":
-    test_main()
+    unittest.main()
diff --git a/Lib/test/test_future5.py b/Lib/test/test_future5.py
index ed03a07..b44b97e 100644
--- a/Lib/test/test_future5.py
+++ b/Lib/test/test_future5.py
@@ -17,5 +17,5 @@
         self.assertEqual(s.getvalue(), "foo\n")
 
 
-def test_main():
-    support.run_unittest(TestMultipleFeatures)
+if __name__ == '__main__':
+    unittest.main()
diff --git a/Misc/NEWS b/Misc/NEWS
index 76074e1..ef295b7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -644,6 +644,9 @@
 
 - Issue #15539: Added regression tests for Tools/scripts/pindent.py.
 
+- Issue #17303: test_future* now work with unittest test discovery.
+  Patch by Zachary Ware.
+
 - Issue #17163: test_file now works with unittest test discovery.
   Patch by Zachary Ware.