diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 463b14c..a87e6ae 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -645,21 +645,21 @@
     def tearDown(self):
         unlink(TESTFN)
 
-    def _create_test_file(self, num_zeroes, tail):
+    def _make_test_file(self, num_zeroes, tail):
         if sys.platform[:3] == 'win' or sys.platform == 'darwin':
             requires('largefile',
                 'test requires %s bytes and a long time to run' % str(0x180000000))
-        with open(TESTFN, 'wb') as f:
-            try:
-                f.seek(num_zeroes)
-                f.write(tail)
-                f.flush()
-            except (IOError, OverflowError):
-                raise unittest.SkipTest("filesystem does not have largefile support")
+        f = open(TESTFN, 'w+b')
+        try:
+            f.seek(num_zeroes)
+            f.write(tail)
+            f.flush()
+        except (IOError, OverflowError):
+            raise unittest.SkipTest("filesystem does not have largefile support")
+        return f
 
     def test_large_offset(self):
-        self._create_test_file(0x14FFFFFFF, b" ")
-        with open(TESTFN, 'rb') as f:
+        with self._make_test_file(0x14FFFFFFF, b" ") as f:
             m = mmap.mmap(f.fileno(), 0, offset=0x140000000, access=mmap.ACCESS_READ)
             try:
                 self.assertEqual(m[0xFFFFFFF], b" ")
@@ -667,8 +667,7 @@
                 m.close()
 
     def test_large_filesize(self):
-        self._create_test_file(0x17FFFFFFF, b" ")
-        with open(TESTFN, 'rb') as f:
+        with self._make_test_file(0x17FFFFFFF, b" ") as f:
             m = mmap.mmap(f.fileno(), 0x10000, access=mmap.ACCESS_READ)
             try:
                 self.assertEqual(m.size(), 0x180000000)
@@ -681,8 +680,7 @@
         tail = b'  DEARdear  '
         start = boundary - len(tail) // 2
         end = start + len(tail)
-        self._create_test_file(start, tail)
-        with open(TESTFN, 'rb') as f:
+        with self._make_test_file(start, tail) as f:
             m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
             try:
                 self.assertEqual(m[start:end], tail)
