mirror of
https://github.com/python/cpython.git
synced 2026-01-06 15:32:22 +00:00
gh-71339: Improve error report for types in assertHasAttr() and assertNotHasAttr() (GH-128818)
This commit is contained in:
parent
89c401fb9a
commit
da122b5fac
2 changed files with 24 additions and 4 deletions
|
|
@ -795,7 +795,15 @@ def testAssertHasAttr(self):
|
|||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertHasAttr(a, 'y')
|
||||
self.assertEqual(str(cm.exception),
|
||||
"List instance has no attribute 'y'")
|
||||
"'List' object has no attribute 'y'")
|
||||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertHasAttr(List, 'spam')
|
||||
self.assertEqual(str(cm.exception),
|
||||
"type object 'List' has no attribute 'spam'")
|
||||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertHasAttr(sys, 'spam')
|
||||
self.assertEqual(str(cm.exception),
|
||||
"module 'sys' has no attribute 'spam'")
|
||||
|
||||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertHasAttr(a, 'y', 'ababahalamaha')
|
||||
|
|
@ -811,7 +819,15 @@ def testAssertNotHasAttr(self):
|
|||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertNotHasAttr(a, 'x')
|
||||
self.assertEqual(str(cm.exception),
|
||||
"List instance has unexpected attribute 'x'")
|
||||
"'List' object has unexpected attribute 'x'")
|
||||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertNotHasAttr(List, 'append')
|
||||
self.assertEqual(str(cm.exception),
|
||||
"type object 'List' has unexpected attribute 'append'")
|
||||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertNotHasAttr(sys, 'modules')
|
||||
self.assertEqual(str(cm.exception),
|
||||
"module 'sys' has unexpected attribute 'modules'")
|
||||
|
||||
with self.assertRaises(self.failureException) as cm:
|
||||
self.assertNotHasAttr(a, 'x', 'ababahalamaha')
|
||||
|
|
|
|||
|
|
@ -1372,16 +1372,20 @@ def assertHasAttr(self, obj, name, msg=None):
|
|||
if not hasattr(obj, name):
|
||||
if isinstance(obj, types.ModuleType):
|
||||
standardMsg = f'module {obj.__name__!r} has no attribute {name!r}'
|
||||
elif isinstance(obj, type):
|
||||
standardMsg = f'type object {obj.__name__!r} has no attribute {name!r}'
|
||||
else:
|
||||
standardMsg = f'{type(obj).__name__} instance has no attribute {name!r}'
|
||||
standardMsg = f'{type(obj).__name__!r} object has no attribute {name!r}'
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
||||
def assertNotHasAttr(self, obj, name, msg=None):
|
||||
if hasattr(obj, name):
|
||||
if isinstance(obj, types.ModuleType):
|
||||
standardMsg = f'module {obj.__name__!r} has unexpected attribute {name!r}'
|
||||
elif isinstance(obj, type):
|
||||
standardMsg = f'type object {obj.__name__!r} has unexpected attribute {name!r}'
|
||||
else:
|
||||
standardMsg = f'{type(obj).__name__} instance has unexpected attribute {name!r}'
|
||||
standardMsg = f'{type(obj).__name__!r} object has unexpected attribute {name!r}'
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
||||
def assertRaisesRegex(self, expected_exception, expected_regex,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue