diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 5aca135..b16c3d6 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -1070,9 +1070,9 @@
                                     ssl_version=ssl.PROTOCOL_TLSv1)
                 s.connect((HOST, server.port))
             except ssl.SSLError as x:
-                raise support.TestFailed("Unexpected SSL error:  " + str(x))
+                self.fail("Unexpected SSL error:  " + str(x))
             except Exception as x:
-                raise support.TestFailed("Unexpected exception:  " + str(x))
+                self.fail("Unexpected exception:  " + str(x))
             else:
                 # helper methods for standardising recv* method signatures
                 def _recv_into():
@@ -1106,7 +1106,7 @@
                         outdata = s.read()
                         outdata = outdata.decode('ASCII', 'strict')
                         if outdata != indata.lower():
-                            raise support.TestFailed(
+                            self.fail(
                                 "While sending with <<%s>> bad data "
                                 "<<%r>> (%d) received; "
                                 "expected <<%r>> (%d)\n" % (
@@ -1116,12 +1116,12 @@
                             )
                     except ValueError as e:
                         if expect_success:
-                            raise support.TestFailed(
+                            self.fail(
                                 "Failed to send with method <<%s>>; "
                                 "expected to succeed.\n" % (meth_name,)
                             )
                         if not str(e).startswith(meth_name):
-                            raise support.TestFailed(
+                            self.fail(
                                 "Method <<%s>> failed with unexpected "
                                 "exception message: %s\n" % (
                                     meth_name, e
@@ -1135,7 +1135,7 @@
                         outdata = recv_meth(*args)
                         outdata = outdata.decode('ASCII', 'strict')
                         if outdata != indata.lower():
-                            raise support.TestFailed(
+                            self.fail(
                                 "While receiving with <<%s>> bad data "
                                 "<<%r>> (%d) received; "
                                 "expected <<%r>> (%d)\n" % (
@@ -1145,12 +1145,12 @@
                             )
                     except ValueError as e:
                         if expect_success:
-                            raise support.TestFailed(
+                            self.fail(
                                 "Failed to receive with method <<%s>>; "
                                 "expected to succeed.\n" % (meth_name,)
                             )
                         if not str(e).startswith(meth_name):
-                            raise support.TestFailed(
+                            self.fail(
                                 "Method <<%s>> failed with unexpected "
                                 "exception message: %s\n" % (
                                     meth_name, e
