diff --git a/Lib/test/test_timeout.py b/Lib/test/test_timeout.py
index 57185a2..a8a935f 100644
--- a/Lib/test/test_timeout.py
+++ b/Lib/test/test_timeout.py
@@ -17,12 +17,12 @@
         self.sock.close()
 
     def testObjectCreation(self):
-        "Test Socket creation"
+        # Test Socket creation
         self.assertEqual(self.sock.gettimeout(), None,
                          "timeout not disabled by default")
 
     def testFloatReturnValue(self):
-        "Test return value of gettimeout()"
+        # Test return value of gettimeout()
         self.sock.settimeout(7.345)
         self.assertEqual(self.sock.gettimeout(), 7.345)
 
@@ -33,7 +33,7 @@
         self.assertEqual(self.sock.gettimeout(), None)
 
     def testReturnType(self):
-        "Test return type of gettimeout()"
+        # Test return type of gettimeout()
         self.sock.settimeout(1)
         self.assertEqual(type(self.sock.gettimeout()), type(1.0))
 
@@ -41,7 +41,7 @@
         self.assertEqual(type(self.sock.gettimeout()), type(1.0))
 
     def testTypeCheck(self):
-        "Test type checking by settimeout()"
+        # Test type checking by settimeout()
         self.sock.settimeout(0)
         self.sock.settimeout(0L)
         self.sock.settimeout(0.0)
@@ -54,13 +54,13 @@
         self.assertRaises(TypeError, self.sock.settimeout, 0j)
 
     def testRangeCheck(self):
-        "Test range checking by settimeout()"
+        # Test range checking by settimeout()
         self.assertRaises(ValueError, self.sock.settimeout, -1)
         self.assertRaises(ValueError, self.sock.settimeout, -1L)
         self.assertRaises(ValueError, self.sock.settimeout, -1.0)
 
     def testTimeoutThenBlocking(self):
-        "Test settimeout() followed by setblocking()"
+        # Test settimeout() followed by setblocking()
         self.sock.settimeout(10)
         self.sock.setblocking(1)
         self.assertEqual(self.sock.gettimeout(), None)
@@ -74,7 +74,7 @@
         self.assertEqual(self.sock.gettimeout(), None)
 
     def testBlockingThenTimeout(self):
-        "Test setblocking() followed by settimeout()"
+        # Test setblocking() followed by settimeout()
         self.sock.setblocking(0)
         self.sock.settimeout(1)
         self.assertEqual(self.sock.gettimeout(), 1)
@@ -98,7 +98,7 @@
         self.sock.close()
 
     def testConnectTimeout(self):
-        "Test connect() timeout"
+        # Test connect() timeout
         _timeout = 0.02
         self.sock.settimeout(_timeout)
 
@@ -113,7 +113,7 @@
                      %(_delta, self.fuzz, _timeout))
 
     def testRecvTimeout(self):
-        "Test recv() timeout"
+        # Test recv() timeout
         _timeout = 0.02
         self.sock.connect(self.addr_remote)
         self.sock.settimeout(_timeout)
@@ -128,7 +128,7 @@
                      %(_delta, self.fuzz, _timeout))
 
     def testAcceptTimeout(self):
-        "Test accept() timeout"
+        # Test accept() timeout
         _timeout = 2
         self.sock.settimeout(_timeout)
         self.sock.bind(self.addr_local)
@@ -144,7 +144,7 @@
                      %(_delta, self.fuzz, _timeout))
 
     def testRecvfromTimeout(self):
-        "Test recvfrom() timeout"
+        # Test recvfrom() timeout
         _timeout = 2
         self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
         self.sock.settimeout(_timeout)
@@ -160,17 +160,17 @@
                      %(_delta, self.fuzz, _timeout))
 
     def testSend(self):
-        "Test send() timeout"
+        # Test send() timeout
         # couldn't figure out how to test it
         pass
 
     def testSendto(self):
-        "Test sendto() timeout"
+        # Test sendto() timeout
         # couldn't figure out how to test it
         pass
 
     def testSendall(self):
-        "Test sendall() timeout"
+        # Test sendall() timeout
         # couldn't figure out how to test it
         pass
 
