diff --git a/Lib/test/test_crypt.py b/Lib/test/test_crypt.py
index 306296f..dc107d8 100644
--- a/Lib/test/test_crypt.py
+++ b/Lib/test/test_crypt.py
@@ -11,24 +11,23 @@
             print('Test encryption: ', c)
 
     def test_salt(self):
-        self.assertEqual(len(crypt.saltchars), 64)
-        for method in crypt.methods():
+        self.assertEqual(len(crypt._saltchars), 64)
+        for method in crypt.methods:
             salt = crypt.mksalt(method)
             self.assertEqual(len(salt),
                     method.salt_chars + (3 if method.ident else 0))
 
     def test_saltedcrypt(self):
-        for method in crypt.methods():
+        for method in crypt.methods:
             pw = crypt.crypt('assword', method)
             self.assertEqual(len(pw), method.total_size)
             pw = crypt.crypt('assword', crypt.mksalt(method))
             self.assertEqual(len(pw), method.total_size)
 
     def test_methods(self):
-        # Gurantee that METHOD_CRYPT is the last method in crypt.methods().
-        methods = crypt.methods()
-        self.assertTrue(len(methods) >= 1)
-        self.assertEqual(crypt.METHOD_CRYPT, methods[-1])
+        # Gurantee that METHOD_CRYPT is the last method in crypt.methods.
+        self.assertTrue(len(crypt.methods) >= 1)
+        self.assertEqual(crypt.METHOD_CRYPT, crypt.methods[-1])
 
 def test_main():
     support.run_unittest(CryptTestCase)
