diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index 96de878..3982d1d 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -2185,6 +2185,29 @@ class Private(Enum):
         self.assertEqual(Private._Private__corporal, 'Radar')
         self.assertEqual(Private._Private__major_, 'Hoolihan')
 
+    @unittest.skipUnless(
+            sys.version_info[:2] == (3, 10),
+            'member-member access now raises an exception',
+            )
+    def test_warning_for_member_from_member_access(self):
+        with self.assertWarns(DeprecationWarning):
+            class Di(Enum):
+                YES = 1
+                NO = 0
+            nope = Di.YES.NO
+        self.assertIs(Di.NO, nope)
+
+    @unittest.skipUnless(
+            sys.version_info[:2] > (3, 10),
+            'member-member access currently issues a warning',
+            )
+    def test_exception_for_member_from_member_access(self):
+        with self.assertRaisesRegex(AttributeError, "Di: no instance attribute .NO."):
+            class Di(Enum):
+                YES = 1
+                NO = 0
+            nope = Di.YES.NO
+
     def test_strenum_auto(self):
         class Strings(StrEnum):
             ONE = auto()
