diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 4a08ba8..585b6ec 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -4,6 +4,7 @@
 import struct
 import subprocess
 import textwrap
+import warnings
 
 # count the number of test runs, used to create unique
 # strings to intern in test_intern()
@@ -148,11 +149,13 @@
     # testing sys.setprofile() is done in test_profile.py
 
     def test_setcheckinterval(self):
-        self.assertRaises(TypeError, sys.setcheckinterval)
-        orig = sys.getcheckinterval()
-        for n in 0, 100, 120, orig: # orig last to restore starting state
-            sys.setcheckinterval(n)
-            self.assertEquals(sys.getcheckinterval(), n)
+        with warnings.catch_warnings():
+            warnings.simplefilter("ignore")
+            self.assertRaises(TypeError, sys.setcheckinterval)
+            orig = sys.getcheckinterval()
+            for n in 0, 100, 120, orig: # orig last to restore starting state
+                sys.setcheckinterval(n)
+                self.assertEquals(sys.getcheckinterval(), n)
 
     def test_switchinterval(self):
         self.assertRaises(TypeError, sys.setswitchinterval)
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index c5d8d79..0b37059 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -342,12 +342,10 @@
         # Try hard to trigger #1703448: a thread is still returned in
         # threading.enumerate() after it has been join()ed.
         enum = threading.enumerate
-        old_interval = sys.getcheckinterval()
+        old_interval = sys.getswitchinterval()
         try:
             for i in range(1, 100):
-                # Try a couple times at each thread-switching interval
-                # to get more interleavings.
-                sys.setcheckinterval(i // 5)
+                sys.setswitchinterval(i * 0.0002)
                 t = threading.Thread(target=lambda: None)
                 t.start()
                 t.join()
@@ -355,7 +353,7 @@
                 self.assertFalse(t in l,
                     "#1703448 triggered after %d trials: %s" % (i, l))
         finally:
-            sys.setcheckinterval(old_interval)
+            sys.setswitchinterval(old_interval)
 
     def test_no_refcycle_through_target(self):
         class RunSelfFunction(object):
