diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py
index 83fad15..011ef17 100644
--- a/Lib/test/test_difflib.py
+++ b/Lib/test/test_difflib.py
@@ -135,14 +135,13 @@
              k.make_table(f3.splitlines(True),t3.splitlines(True)),
              ])
         actual = full.replace('</body>','\n%s\n</body>' % tables)
-        # temporarily uncomment next three lines to baseline this test
-        #f = open('test_difflib_expect.html','w')
-        #f.write(actual)
-        #f.close()
-        expect = open(findfile('test_difflib_expect.html')).read()
 
+        # temporarily uncomment next two lines to baseline this test
+        #with open('test_difflib_expect.html','w') as fp:
+        #    fp.write(actual)
 
-        self.assertEqual(actual,expect)
+        with open(findfile('test_difflib_expect.html')) as fp:
+            self.assertEqual(actual, fp.read())
 
     def test_recursion_limit(self):
         # Check if the problem described in patch #1413711 exists.
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 4e597f9..144f89c 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -170,7 +170,8 @@
     def __init__(self, *args, **kwargs):
         unittest.TestCase.__init__(self, *args, **kwargs)
 
-        self.source = file(inspect.getsourcefile(self.fodderFile)).read()
+        with open(inspect.getsourcefile(self.fodderFile)) as fp:
+            self.source = fp.read()
 
     def sourcerange(self, top, bottom):
         lines = self.source.split("\n")
diff --git a/Lib/test/test_univnewlines.py b/Lib/test/test_univnewlines.py
index 370a4b7..63c6fe8 100644
--- a/Lib/test/test_univnewlines.py
+++ b/Lib/test/test_univnewlines.py
@@ -37,9 +37,8 @@
     WRITEMODE = 'wb'
 
     def setUp(self):
-        fp = open(test_support.TESTFN, self.WRITEMODE)
-        fp.write(self.DATA)
-        fp.close()
+        with open(test_support.TESTFN, self.WRITEMODE) as fp:
+            fp.write(self.DATA)
 
     def tearDown(self):
         try:
@@ -48,35 +47,35 @@
             pass
 
     def test_read(self):
-        fp = open(test_support.TESTFN, self.READMODE)
-        data = fp.read()
+        with open(test_support.TESTFN, self.READMODE) as fp:
+            data = fp.read()
         self.assertEqual(data, DATA_LF)
         self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
 
     def test_readlines(self):
-        fp = open(test_support.TESTFN, self.READMODE)
-        data = fp.readlines()
+        with open(test_support.TESTFN, self.READMODE) as fp:
+            data = fp.readlines()
         self.assertEqual(data, DATA_SPLIT)
         self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
 
     def test_readline(self):
-        fp = open(test_support.TESTFN, self.READMODE)
-        data = []
-        d = fp.readline()
-        while d:
-            data.append(d)
+        with open(test_support.TESTFN, self.READMODE) as fp:
+            data = []
             d = fp.readline()
+            while d:
+                data.append(d)
+                d = fp.readline()
         self.assertEqual(data, DATA_SPLIT)
         self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
 
     def test_seek(self):
-        fp = open(test_support.TESTFN, self.READMODE)
-        fp.readline()
-        pos = fp.tell()
-        data = fp.readlines()
-        self.assertEqual(data, DATA_SPLIT[1:])
-        fp.seek(pos)
-        data = fp.readlines()
+        with open(test_support.TESTFN, self.READMODE) as fp:
+            fp.readline()
+            pos = fp.tell()
+            data = fp.readlines()
+            self.assertEqual(data, DATA_SPLIT[1:])
+            fp.seek(pos)
+            data = fp.readlines()
         self.assertEqual(data, DATA_SPLIT[1:])
 
     def test_execfile(self):
@@ -106,10 +105,10 @@
     DATA = DATA_CRLF
 
     def test_tell(self):
-        fp = open(test_support.TESTFN, self.READMODE)
-        self.assertEqual(repr(fp.newlines), repr(None))
-        data = fp.readline()
-        pos = fp.tell()
+        with open(test_support.TESTFN, self.READMODE) as fp:
+            self.assertEqual(repr(fp.newlines), repr(None))
+            data = fp.readline()
+            pos = fp.tell()
         self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
 
 class TestMixedNewlines(TestGenericUnivNewlines):
