diff --git a/cryptography/exceptions.py b/cryptography/exceptions.py
index 86082e4..4b4d4c3 100644
--- a/cryptography/exceptions.py
+++ b/cryptography/exceptions.py
@@ -22,9 +22,9 @@
 
 
 class UnsupportedAlgorithm(Exception):
-    def __init__(self, message, cause=None):
+    def __init__(self, message, reason=None):
         super(UnsupportedAlgorithm, self).__init__(message)
-        self._cause = cause
+        self._reason = reason
 
 
 class AlreadyFinalized(Exception):
diff --git a/tests/hazmat/backends/test_commoncrypto.py b/tests/hazmat/backends/test_commoncrypto.py
index 40a9f4a..7c703f6 100644
--- a/tests/hazmat/backends/test_commoncrypto.py
+++ b/tests/hazmat/backends/test_commoncrypto.py
@@ -16,9 +16,7 @@
 import pytest
 
 from cryptography import utils
-from cryptography.exceptions import (
-    InternalError, _Reasons
-)
+from cryptography.exceptions import InternalError, _Reasons
 from cryptography.hazmat.bindings.commoncrypto.binding import Binding
 from cryptography.hazmat.primitives import interfaces
 from cryptography.hazmat.primitives.ciphers.algorithms import AES
diff --git a/tests/test_utils.py b/tests/test_utils.py
index b430f56..939845f 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -1612,35 +1612,38 @@
     assert cryptography.__version__ == cryptography_vectors.__version__
 
 
-@pytest.mark.xfail
 def test_raises_unsupported_algorithm_wrong_type():
-    # Check that it asserts if the wrong type of exception is raised.
-    with raises_unsupported_algorithm(None):
-        raise Exception
-
-
-@pytest.mark.xfail
-def test_raises_unsupported_algorithm_wrong_reason():
-    # Check that it asserts if the wrong reason code is raised.
-    with raises_unsupported_algorithm(None):
-        raise UnsupportedAlgorithm("An error.",
-                                   _Reasons.BACKEND_MISSING_INTERFACE)
-
-
-@pytest.mark.xfail
-def test_raises_unsupported_no_exc():
-    # Check that it raises if no exception is raised.
-    with raises_unsupported_algorithm(
-        _Reasons.BACKEND_MISSING_INTERFACE
-    ):
+    # Check that it raises 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 fails if the wrong reason code is raised.
+    with pytest.raises(pytest.fail.Exception):
+        with raises_unsupported_algorithm(None):
+            raise UnsupportedAlgorithm("An error.",
+                                       _Reasons.BACKEND_MISSING_INTERFACE)
+
+
+def test_raises_unsupported_no_exc():
+    # Check that it fails if no exception is raised.
+    with pytest.raises(pytest.fail.Exception):
+        with raises_unsupported_algorithm(
+            _Reasons.BACKEND_MISSING_INTERFACE
+        ):
+            pass
+
 
 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:
+    ) as exc_info:
         raise UnsupportedAlgorithm("An error.",
                                    _Reasons.BACKEND_MISSING_INTERFACE)
-    assert exc
+    assert exc_info.type is UnsupportedAlgorithm
diff --git a/tests/utils.py b/tests/utils.py
index f948642..3e5ea5f 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -70,10 +70,12 @@
 
 
 @contextmanager
-def raises_unsupported_algorithm(cause):
+def raises_unsupported_algorithm(reason):
     with pytest.raises(UnsupportedAlgorithm) as exc_info:
         yield exc_info
-    assert exc_info.value._cause is cause
+
+    if exc_info.value._reason is not reason:
+        pytest.fail("Did not get expected reason tag for UnsupportedAlgorithm")
 
 
 def load_vectors_from_file(filename, loader):
