diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py
index c7c128e..a515d3a 100644
--- a/Lib/test/test_hashlib.py
+++ b/Lib/test/test_hashlib.py
@@ -901,36 +901,18 @@ def test_get_fips_mode(self):
         if fips_mode is not None:
             self.assertIsInstance(fips_mode, int)
 
-    def test_disallow_instanciation(self):
-        constructors = []
-        try:
-            import _md5
-            constructors.append(_md5.md5)
-        except ImportError:
-            pass
-        try:
-            import _sha1
-            constructors.append(_sha1.sha1)
-        except ImportError:
-            pass
-        try:
-            import _sha256
-            constructors.append(_sha256.sha224)
-            constructors.append(_sha256.sha256)
-        except ImportError:
-            pass
-        try:
-            import _sha512
-            constructors.append(_sha512.sha384)
-            constructors.append(_sha512.sha512)
-        except ImportError:
-            pass
-
-        for constructor in constructors:
-            h = constructor()
-            with self.subTest(constructor=constructor):
-                hash_type = type(h)
-                self.assertRaises(TypeError, hash_type)
+    @support.cpython_only
+    def test_disallow_instantiation(self):
+        for algorithm, constructors in self.constructors_to_test.items():
+            if algorithm.startswith(("sha3_", "shake", "blake")):
+                # _sha3 and _blake types can be instantiated
+                continue
+            # all other types have DISALLOW_INSTANTIATION
+            for constructor in constructors:
+                h = constructor()
+                with self.subTest(constructor=constructor):
+                    hash_type = type(h)
+                    self.assertRaises(TypeError, hash_type)
 
     @unittest.skipUnless(HASH is not None, 'need _hashlib')
     def test_hash_disallow_instanciation(self):
