bpo-43916: Rewrite new hashlib tests, fix typo (GH-25791)

* bpo-43916: Rewrite new hashlib tests, fix typo
* Flag test as cpython only
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):