summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_class.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_class.py')
-rw-r--r--Lib/test/test_class.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py
index 7cf5e06..91c53b7 100644
--- a/Lib/test/test_class.py
+++ b/Lib/test/test_class.py
@@ -611,6 +611,49 @@ class ClassTests(unittest.TestCase):
with self.assertRaises(TypeError):
type.__setattr__(A, b'x', None)
+ def testTypeAttributeAccessErrorMessages(self):
+ class A:
+ pass
+
+ error_msg = "type object 'A' has no attribute 'x'"
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ A.x
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ del A.x
+
+ def testObjectAttributeAccessErrorMessages(self):
+ class A:
+ pass
+ class B:
+ y = 0
+ __slots__ = ('z',)
+
+ error_msg = "'A' object has no attribute 'x'"
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ A().x
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ del A().x
+
+ error_msg = "'B' object has no attribute 'x'"
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ B().x
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ del B().x
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ B().x = 0
+
+ error_msg = "'B' object attribute 'y' is read-only"
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ del B().y
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ B().y = 0
+
+ error_msg = 'z'
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ B().z
+ with self.assertRaisesRegex(AttributeError, error_msg):
+ del B().z
+
def testConstructorErrorMessages(self):
# bpo-31506: Improves the error message logic for object_new & object_init