diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index 9a7882b..ceb0da8 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -2158,9 +2158,6 @@ def __init__(self, *args):
                 self._valid = True
             @classmethod
             def _missing_(cls, value):
-                # encountered an unknown value!
-                # Luckily I'm a LenientStrEnum, so I won't crash just yet.
-                # You might want to add a new case though.
                 unknown = cls._member_type_.__new__(cls, value)
                 unknown._valid = False
                 unknown._name_ = value.upper()
@@ -3586,7 +3583,7 @@ class Bizarre(Flag):
         self.assertEqual(Bizarre.d.value, 6)
         with self.assertRaisesRegex(
                 ValueError,
-                "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2",
+                "invalid Flag 'Bizarre': aliases b and d are missing combined values of 0x3 .use `enum.show_flag_values.value.` for details.",
             ):
             @verify(NAMED_FLAGS)
             class Bizarre(Flag):
@@ -3594,6 +3591,7 @@ class Bizarre(Flag):
                 c = 4
                 d = 6
         #
+        self.assertEqual(enum.show_flag_values(3), [1, 2])
         class Bizarre(IntFlag):
             b = 3
             c = 4
@@ -3604,13 +3602,13 @@ class Bizarre(IntFlag):
         self.assertEqual(Bizarre.d.value, 6)
         with self.assertRaisesRegex(
                 ValueError,
-                "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2",
+                "invalid Flag 'Bizarre': alias d is missing value 0x2 .use `enum.show_flag_values.value.` for details.",
             ):
             @verify(NAMED_FLAGS)
             class Bizarre(IntFlag):
-                b = 3
                 c = 4
                 d = 6
+        self.assertEqual(enum.show_flag_values(2), [2])
 
     def test_unique_clean(self):
         @verify(UNIQUE)
@@ -3877,7 +3875,7 @@ class Missing:
 
 class MiscTestCase(unittest.TestCase):
     def test__all__(self):
-        support.check__all__(self, enum, not_exported={'bin'})
+        support.check__all__(self, enum, not_exported={'bin', 'show_flag_values'})
 
 
 # These are unordered here on purpose to ensure that declaration order
