diff --git a/Lib/test/test_fcntl.py b/Lib/test/test_fcntl.py
index 08b59ec..8d416b6 100755
--- a/Lib/test/test_fcntl.py
+++ b/Lib/test/test_fcntl.py
@@ -3,7 +3,6 @@
 OS/2+EMX doesn't support the file locking operations.
 
 """
-import struct
 import fcntl
 import os
 import struct
@@ -11,12 +10,7 @@
 import unittest
 from test.test_support import verbose, TESTFN, unlink, run_unittest
 
-# TODO - Write tests for ioctl(), flock() and lockf().
-
-try:
-    import termios
-except ImportError:
-    termios = None
+# TODO - Write tests for flock() and lockf().
 
 def get_lockdata():
     if sys.platform.startswith('atheos'):
@@ -88,29 +82,8 @@
         self.f.close()
 
 
-class TestIoctl(unittest.TestCase):
-    if termios:
-        def test_ioctl_signed_unsigned_code_param(self):
-            if termios.TIOCSWINSZ < 0:
-                set_winsz_opcode_maybe_neg = termios.TIOCSWINSZ
-                set_winsz_opcode_pos = termios.TIOCSWINSZ & 0xffffffffL
-            else:
-                set_winsz_opcode_pos = termios.TIOCSWINSZ
-                set_winsz_opcode_maybe_neg, = struct.unpack("i",
-                        struct.pack("I", termios.TIOCSWINSZ))
-
-            # We're just testing that these calls do not raise exceptions.
-            saved_winsz = fcntl.ioctl(0, termios.TIOCGWINSZ, "\0"*8)
-            our_winsz = struct.pack("HHHH",80,25,0,0)
-            # test both with a positive and potentially negative ioctl code
-            new_winsz = fcntl.ioctl(0, set_winsz_opcode_pos, our_winsz)
-            new_winsz = fcntl.ioctl(0, set_winsz_opcode_maybe_neg, our_winsz)
-            fcntl.ioctl(0, set_winsz_opcode_maybe_neg, saved_winsz)
-
-
 def test_main():
     run_unittest(TestFcntl)
-    run_unittest(TestIoctl)
 
 if __name__ == '__main__':
     test_main()
diff --git a/Lib/test/test_ioctl.py b/Lib/test/test_ioctl.py
index 2b127e2..9e6d4bc 100644
--- a/Lib/test/test_ioctl.py
+++ b/Lib/test/test_ioctl.py
@@ -14,6 +14,11 @@
 except IOError:
     raise TestSkipped("Unable to open /dev/tty")
 
+try:
+    import pty
+except ImportError:
+    pty = None
+
 class IoctlTests(unittest.TestCase):
     def test_ioctl(self):
         # If this process has been put into the background, TIOCGPGRP returns
@@ -34,6 +39,30 @@
         self.assertEquals(r, 0)
         self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
 
+    def test_ioctl_signed_unsigned_code_param(self):
+        if not pty:
+            raise TestSkipped('pty module required')
+        mfd, sfd = pty.openpty()
+        try:
+            if termios.TIOCSWINSZ < 0:
+                set_winsz_opcode_maybe_neg = termios.TIOCSWINSZ
+                set_winsz_opcode_pos = termios.TIOCSWINSZ & 0xffffffffL
+            else:
+                set_winsz_opcode_pos = termios.TIOCSWINSZ
+                set_winsz_opcode_maybe_neg, = struct.unpack("i",
+                        struct.pack("I", termios.TIOCSWINSZ))
+
+            # We're just testing that these calls do not raise exceptions.
+            saved_winsz = fcntl.ioctl(mfd, termios.TIOCGWINSZ, "\0"*8)
+            our_winsz = struct.pack("HHHH",80,25,0,0)
+            # test both with a positive and potentially negative ioctl code
+            new_winsz = fcntl.ioctl(mfd, set_winsz_opcode_pos, our_winsz)
+            new_winsz = fcntl.ioctl(mfd, set_winsz_opcode_maybe_neg, our_winsz)
+            fcntl.ioctl(mfd, set_winsz_opcode_maybe_neg, saved_winsz)
+        finally:
+            os.close(mfd)
+            os.close(sfd)
+
 def test_main():
     run_unittest(IoctlTests)
 
