diff --git a/tests/hazmat/primitives/twofactor/test_hotp.py b/tests/hazmat/primitives/twofactor/test_hotp.py
index b2b2677..803f96f 100644
--- a/tests/hazmat/primitives/twofactor/test_hotp.py
+++ b/tests/hazmat/primitives/twofactor/test_hotp.py
@@ -17,13 +17,13 @@
 
 import pytest
 
-from cryptography.exceptions import InvalidToken, _Causes
+from cryptography.exceptions import InvalidToken, _Reasons
 from cryptography.hazmat.primitives import hashes
 from cryptography.hazmat.primitives.hashes import MD5, SHA1
 from cryptography.hazmat.primitives.twofactor.hotp import HOTP
 
 from ....utils import (
-    load_nist_vectors, load_vectors_from_file, raises_unsupported
+    load_nist_vectors, load_vectors_from_file, raises_unsupported_algorithm
 )
 
 vectors = load_vectors_from_file(
@@ -105,5 +105,5 @@
 
     pretend_backend = object()
 
-    with raises_unsupported(_Causes.BACKEND_MISSING_INTERFACE):
+    with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE):
         HOTP(secret, 8, hashes.SHA1(), pretend_backend)
diff --git a/tests/hazmat/primitives/twofactor/test_totp.py b/tests/hazmat/primitives/twofactor/test_totp.py
index 208b0ee..518d3ce 100644
--- a/tests/hazmat/primitives/twofactor/test_totp.py
+++ b/tests/hazmat/primitives/twofactor/test_totp.py
@@ -15,12 +15,12 @@
 
 import pytest
 
-from cryptography.exceptions import InvalidToken, _Causes
+from cryptography.exceptions import InvalidToken, _Reasons
 from cryptography.hazmat.primitives import hashes
 from cryptography.hazmat.primitives.twofactor.totp import TOTP
 
 from ....utils import (
-    load_nist_vectors, load_vectors_from_file, raises_unsupported
+    load_nist_vectors, load_vectors_from_file, raises_unsupported_algorithm
 )
 
 vectors = load_vectors_from_file(
@@ -139,5 +139,5 @@
 
     pretend_backend = object()
 
-    with raises_unsupported(_Causes.BACKEND_MISSING_INTERFACE):
+    with raises_unsupported_algorithm(_Reasons.BACKEND_MISSING_INTERFACE):
         TOTP(secret, 8, hashes.SHA1(), 30, pretend_backend)
diff --git a/tests/test_utils.py b/tests/test_utils.py
index b63f1ba..a8046dc 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -21,13 +21,15 @@
 import pytest
 
 import cryptography
+from cryptography.exceptions import UnsupportedAlgorithm, _Reasons
+
 import cryptography_vectors
 
 from .utils import (
     check_backend_support, check_for_iface, load_cryptrec_vectors,
     load_fips_dsa_key_pair_vectors, load_hash_vectors, load_nist_vectors,
     load_pkcs1_vectors, load_rsa_nist_vectors, load_vectors_from_file,
-    select_backends
+    raises_unsupported_algorithm, select_backends
 )
 
 
@@ -1608,3 +1610,32 @@
 
 def test_vector_version():
     assert cryptography.__version__ == cryptography_vectors.__version__
+
+
+def test_raises_unsupported_algorithm_wrong_type():
+    # Check that it asserts if the wrong type of exception is raised.
+
+    class TestException(Exception):
+        pass
+
+    with pytest.raises(TestException):
+        with raises_unsupported_algorithm(None):
+            raise TestException
+
+
+def test_raises_unsupported_algorithm_wrong_reason():
+    # Check that it asserts if the wrong reason code is raised.
+    with pytest.raises(AssertionError):
+        with raises_unsupported_algorithm(None):
+            raise UnsupportedAlgorithm("An error.",
+                                       _Reasons.BACKEND_MISSING_INTERFACE)
+
+
+def test_raises_unsupported_algorithm():
+    # Check that it doesnt assert if the right things are raised.
+    with raises_unsupported_algorithm(
+        _Reasons.BACKEND_MISSING_INTERFACE
+    ) as exc:
+        raise UnsupportedAlgorithm("An error.",
+                                   _Reasons.BACKEND_MISSING_INTERFACE)
+    assert exc
diff --git a/tests/utils.py b/tests/utils.py
index fbe448f..f948642 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -70,10 +70,10 @@
 
 
 @contextmanager
-def raises_unsupported(cause):
+def raises_unsupported_algorithm(cause):
     with pytest.raises(UnsupportedAlgorithm) as exc_info:
-        yield
-    assert exc_info.value._cause == cause
+        yield exc_info
+    assert exc_info.value._cause is cause
 
 
 def load_vectors_from_file(filename, loader):
