diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 878b79b..ae8e888 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -72,33 +72,33 @@
         else:
             self.fail("Expected CalledProcessError")
 
-    def test_check_call_output(self):
-        # check_call_output() function with zero return code
-        output = subprocess.check_call_output(
+    def test_check_output(self):
+        # check_output() function with zero return code
+        output = subprocess.check_output(
                 [sys.executable, "-c", "print 'BDFL'"])
         self.assertTrue('BDFL' in output)
 
-    def test_check_call_output_nonzero(self):
+    def test_check_output_nonzero(self):
         # check_call() function with non-zero return code
         try:
-            subprocess.check_call_output(
+            subprocess.check_output(
                     [sys.executable, "-c", "import sys; sys.exit(5)"])
         except subprocess.CalledProcessError, e:
             self.assertEqual(e.returncode, 5)
         else:
             self.fail("Expected CalledProcessError")
 
-    def test_check_call_output_stderr(self):
-        # check_call_output() function stderr redirected to stdout
-        output = subprocess.check_call_output(
+    def test_check_output_stderr(self):
+        # check_output() function stderr redirected to stdout
+        output = subprocess.check_output(
                 [sys.executable, "-c", "import sys; sys.stderr.write('BDFL')"],
                 stderr=subprocess.STDOUT)
         self.assertTrue('BDFL' in output)
 
-    def test_check_call_output_stdout_arg(self):
-        # check_call_output() function stderr redirected to stdout
+    def test_check_output_stdout_arg(self):
+        # check_output() function stderr redirected to stdout
         try:
-            output = subprocess.check_call_output(
+            output = subprocess.check_output(
                     [sys.executable, "-c", "print 'will not be run'"],
                     stdout=sys.stdout)
         except ValueError, e:
