diff --git a/tests/primitives/test_hash_vectors.py b/tests/primitives/test_hash_vectors.py
index 4b71ad7..8198b08 100644
--- a/tests/primitives/test_hash_vectors.py
+++ b/tests/primitives/test_hash_vectors.py
@@ -29,7 +29,7 @@
             "SHA1LongMsg.rsp",
             "SHA1ShortMsg.rsp",
         ],
-        lambda api: hashes.SHA1(api=api),
+        hashes.SHA1,
         only_if=lambda api: api.supports_hash("sha1"),
         skip_message="Does not support SHA1",
     )
diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py
index 3419b14..1bc2e9e 100644
--- a/tests/primitives/test_hashes.py
+++ b/tests/primitives/test_hashes.py
@@ -20,7 +20,7 @@
 
 class TestSHA1(object):
     test_SHA1 = generate_base_hash_test(
-        lambda api: hashes.SHA1(api=api),
+        hashes.SHA1,
         digest_size=20,
         block_size=64,
         only_if=lambda api: api.supports_hash("sha1"),
diff --git a/tests/primitives/utils.py b/tests/primitives/utils.py
index f301199..0d4c0eb 100644
--- a/tests/primitives/utils.py
+++ b/tests/primitives/utils.py
@@ -42,7 +42,7 @@
     assert actual_ciphertext == binascii.unhexlify(ciphertext)
 
 
-def generate_hash_test(param_loader, path, file_names, hash_factory,
+def generate_hash_test(param_loader, path, file_names, hash_cls,
                        only_if=lambda api: True, skip_message=None):
     def test_hash(self):
         for api in _ALL_APIS:
@@ -51,7 +51,7 @@
                     yield (
                         hash_test,
                         api,
-                        hash_factory,
+                        hash_cls,
                         params,
                         only_if,
                         skip_message
@@ -59,24 +59,24 @@
     return test_hash
 
 
-def hash_test(api, hash_factory, params, only_if, skip_message):
+def hash_test(api, hash_cls, params, only_if, skip_message):
     if not only_if(api):
         pytest.skip(skip_message)
     msg = params[0]
     md = params[1]
-    m = hash_factory(api)
+    m = hash_cls(api=api)
     m.update(binascii.unhexlify(msg))
     assert m.hexdigest() == md.replace(" ", "").lower()
 
 
-def generate_base_hash_test(hash_factory, digest_size, block_size,
+def generate_base_hash_test(hash_cls, digest_size, block_size,
                             only_if=lambda api: True, skip_message=None):
     def test_base_hash(self):
         for api in _ALL_APIS:
             yield (
                 base_hash_test,
                 api,
-                hash_factory,
+                hash_cls,
                 digest_size,
                 block_size,
                 only_if,
@@ -85,11 +85,11 @@
     return test_base_hash
 
 
-def base_hash_test(api, hash_factory, digest_size, block_size, only_if,
+def base_hash_test(api, hash_cls, digest_size, block_size, only_if,
                    skip_message):
     if not only_if(api):
         pytest.skip(skip_message)
-    m = hash_factory(api=api)
+    m = hash_cls(api=api)
     assert m.digest_size == digest_size
     assert m.block_size == block_size
     m_copy = m.copy()
