diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index 5b1f8f7..5a9091f 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -280,35 +280,36 @@
     4
     """
 
-class Tester7750(unittest.TestCase):
-    # if the filename has something that resolves to a python
-    #  escape character (such as \t), it will fail
-    test_fn = '.\\test7750.py'
+class ModuleInitTester(unittest.TestCase):
 
-    msg = "issue7750 only applies when os.sep is a backslash"
-    @unittest.skipUnless(os.path.sep == '\\', msg)
-    def test_issue7750(self):
-        with open(self.test_fn, 'w') as f:
-            f.write('print("hello world")')
-        cmd = [sys.executable, '-m', 'pdb', self.test_fn,]
+    def test_filename_correct(self):
+        """
+        In issue 7750, it was found that if the filename has a sequence that
+        resolves to an escape character in a Python string (such as \t), it
+        will be treated as the escaped character.
+        """
+        # the test_fn must contain something like \t
+        # on Windows, this will create 'test_mod.py' in the current directory.
+        # on Unix, this will create '.\test_mod.py' in the current directory.
+        test_fn = '.\\test_mod.py'
+        code = 'print("testing pdb")'
+        with open(test_fn, 'w') as f:
+            f.write(code)
+        self.addCleanup(os.remove, test_fn)
+        cmd = [sys.executable, '-m', 'pdb', test_fn,]
         proc = subprocess.Popen(cmd,
             stdout=subprocess.PIPE,
             stdin=subprocess.PIPE,
             stderr=subprocess.STDOUT,
             )
         stdout, stderr = proc.communicate('quit\n')
-        self.assertNotIn('IOError', stdout, "pdb munged the filename")
-
-    def tearDown(self):
-        if os.path.isfile(self.test_fn):
-            os.remove(self.test_fn)
+        self.assertIn(code, stdout, "pdb munged the filename")
 
 
 def test_main():
     from test import test_pdb
     test_support.run_doctest(test_pdb, verbosity=True)
-
+    test_support.run_unittest(ModuleInitTester)
 
 if __name__ == '__main__':
     test_main()
-    unittest.main()
