diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 7957bab..45520b5 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -10,6 +10,7 @@
 from tempfile import TemporaryFile
 from random import randint, random
 
+import test.test_support as support
 from test.test_support import TESTFN, run_unittest
 
 TESTFN2 = TESTFN + "2"
@@ -454,8 +455,6 @@
         self.assertEqual(zf.read(filename), content)
         zf.close()
 
-        os.unlink(TESTFN)
-
     def testCloseErroneousFile(self):
         # This test checks that the ZipFile constructor closes the file object
         # it opens if there's an error in the file.  If it doesn't, the traceback
@@ -469,7 +468,7 @@
         try:
             zf = zipfile.ZipFile(TESTFN)
         except zipfile.BadZipfile:
-            os.unlink(TESTFN)
+            pass
 
     def testIsZipErroneousFile(self):
         # This test checks that the is_zipfile function correctly identifies
@@ -478,7 +477,6 @@
         fp.write("this is not a legal zip file\n")
         fp.close()
         chk = zipfile.is_zipfile(TESTFN)
-        os.unlink(TESTFN)
         self.assert_(chk is False)
 
     def testIsZipValidFile(self):
@@ -488,7 +486,6 @@
         zipf.writestr("foo.txt", "O, for a Muse of Fire!")
         zipf.close()
         chk = zipfile.is_zipfile(TESTFN)
-        os.unlink(TESTFN)
         self.assert_(chk is True)
 
     def testNonExistentFileRaisesIOError(self):
@@ -517,6 +514,10 @@
         # version of .testzip would swallow this exception (and any other)
         # and report that the first file in the archive was corrupt.
         self.assertRaises(RuntimeError, zipf.testzip)
+        
+    def tearDown(self):
+        support.unlink(TESTFN)
+        support.unlink(TESTFN2)
 
 class DecryptionTests(unittest.TestCase):
     # This test checks that ZIP decryption works. Since the library does not
@@ -567,6 +568,10 @@
         fp = open(TESTFN, "wb")
         fp.write(self.data)
         fp.close()
+        
+    def tearDown(self):
+        support.unlink(TESTFN)
+        support.unlink(TESTFN2)
 
     def makeTestArchive(self, f, compression):
         # Create the ZIP archive
@@ -799,6 +804,8 @@
     def tearDown(self):
         for sep, fn in self.arcfiles.items():
             os.remove(fn)
+        support.unlink(TESTFN)
+        support.unlink(TESTFN2)
 
 
 def test_main():
@@ -806,7 +813,5 @@
                  PyZipFileTests, DecryptionTests, TestsWithMultipleOpens,
                  UniversalNewlineTests, TestsWithRandomBinaryFiles)
 
-    #run_unittest(TestZip64InSmallFiles)
-
 if __name__ == "__main__":
     test_main()
