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.
 
