diff --git a/ironic_tempest_plugin/tests/api/admin/test_microversion_enforcement.py b/ironic_tempest_plugin/tests/api/admin/test_microversion_enforcement.py
index 19235a4..6dd9982 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_microversion_enforcement.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_microversion_enforcement.py
@@ -31,11 +31,16 @@
     """Mixin class containing shared microversion test functionality."""
 
     def _microversion_test(
-            self, method_name, min_version, expected_error, required_args,
-            ignore_positive=False):
+        self,
+        method_name,
+        min_version,
+        expected_error,
+        required_args,
+        ignore_positive=False,
+    ):
         """Test methods with invalid API versions"""
 
-        major, minor = map(int, min_version.split('.'))
+        major, minor = map(int, min_version.split("."))
         invalid_versions = []
         if minor >= 11:
             invalid_versions.append(f"{major}.{minor - 10}")
@@ -68,11 +73,20 @@
                 )
                 method = getattr(self.client, method_name)
 
-                self.assertRaises(
-                    expected_error,
-                    method,
-                    **required_args,
-                )
+                try:
+                    method(**required_args)
+                    self.fail(
+                        f"Request for microversion {microversion} for "
+                        f"{method_name} unexpectedly succeeded. We expected "
+                        f"{expected_error.__name__}."
+                    )
+                except expected_error:
+                    pass  # Expected error, test passes
+                except Exception as e:
+                    self.fail(
+                        f"Request for microversion {microversion} for "
+                        f"{method_name} raised unexpected exception: {e}"
+                    )
 
         if ignore_positive:
             return True
@@ -100,20 +114,21 @@
                 method(**required_args)
                 return True
 
-            except expected_error:
+            except expected_error as e:
                 self.fail(
-                    f"Method {method_name} failed with "
-                    f"valid microversion {min_version}"
+                    f"Method {method_name} failed with valid "
+                    f"microversion {min_version}: {e}"
                 )
             except Exception as e:
                 # Other exceptions might be expected due to invalid test data
                 # For example, a 404 might be expected if we're using fake IDs
                 self.assertNotIsInstance(
-                    e, expected_error,
+                    e,
+                    expected_error,
                     (
-                        f"Got unexpected {expected_error.__name__} with "
-                        f"valid microversion {min_version}"
-                    )
+                        f"Got unexpected {expected_error.__name__} with valid "
+                        f"microversion {min_version}: {e}"
+                    ),
                 )
 
 
