diff --git a/cryptography/exceptions.py b/cryptography/exceptions.py
index d97f20c..8825d3b 100644
--- a/cryptography/exceptions.py
+++ b/cryptography/exceptions.py
@@ -14,8 +14,8 @@
 from __future__ import absolute_import, division, print_function
 
 
-class _Causes(object):
-    BACKEND_MISSING_INTERFACE = 0
+class _Reasons(object):
+    BACKEND_MISSING_INTERFACE = object()
 
 
 class UnsupportedAlgorithm(Exception):
diff --git a/cryptography/hazmat/primitives/twofactor/hotp.py b/cryptography/hazmat/primitives/twofactor/hotp.py
index bac23d1..41c467c 100644
--- a/cryptography/hazmat/primitives/twofactor/hotp.py
+++ b/cryptography/hazmat/primitives/twofactor/hotp.py
@@ -17,7 +17,9 @@
 
 import six
 
-from cryptography.exceptions import InvalidToken, UnsupportedAlgorithm, _Causes
+from cryptography.exceptions import (
+    InvalidToken, UnsupportedAlgorithm, _Reasons
+)
 from cryptography.hazmat.backends.interfaces import HMACBackend
 from cryptography.hazmat.primitives import constant_time, hmac
 from cryptography.hazmat.primitives.hashes import SHA1, SHA256, SHA512
@@ -28,7 +30,7 @@
         if not isinstance(backend, HMACBackend):
             raise UnsupportedAlgorithm(
                 "Backend object does not implement HMACBackend",
-                _Causes.BACKEND_MISSING_INTERFACE
+                _Reasons.BACKEND_MISSING_INTERFACE
             )
 
         if len(key) < 16:
diff --git a/cryptography/hazmat/primitives/twofactor/totp.py b/cryptography/hazmat/primitives/twofactor/totp.py
index d016239..e55ba00 100644
--- a/cryptography/hazmat/primitives/twofactor/totp.py
+++ b/cryptography/hazmat/primitives/twofactor/totp.py
@@ -13,7 +13,9 @@
 
 from __future__ import absolute_import, division, print_function
 
-from cryptography.exceptions import InvalidToken, UnsupportedAlgorithm, _Causes
+from cryptography.exceptions import (
+    InvalidToken, UnsupportedAlgorithm, _Reasons
+)
 from cryptography.hazmat.backends.interfaces import HMACBackend
 from cryptography.hazmat.primitives import constant_time
 from cryptography.hazmat.primitives.twofactor.hotp import HOTP
@@ -24,7 +26,7 @@
         if not isinstance(backend, HMACBackend):
             raise UnsupportedAlgorithm(
                 "Backend object does not implement HMACBackend",
-                _Causes.BACKEND_MISSING_INTERFACE
+                _Reasons.BACKEND_MISSING_INTERFACE
             )
 
         self._time_step = time_step
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):
