mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
bpo-44110: Improve string's __getitem__ error message (GH-26042)
This commit is contained in:
parent
7569c0fe91
commit
ed1076428c
4 changed files with 13 additions and 3 deletions
|
@ -80,12 +80,14 @@ class BaseTest:
|
|||
self.assertIsNot(obj, realresult)
|
||||
|
||||
# check that obj.method(*args) raises exc
|
||||
def checkraises(self, exc, obj, methodname, *args):
|
||||
def checkraises(self, exc, obj, methodname, *args, expected_msg=None):
|
||||
obj = self.fixtype(obj)
|
||||
args = self.fixtype(args)
|
||||
with self.assertRaises(exc) as cm:
|
||||
getattr(obj, methodname)(*args)
|
||||
self.assertNotEqual(str(cm.exception), '')
|
||||
if expected_msg is not None:
|
||||
self.assertEqual(str(cm.exception), expected_msg)
|
||||
|
||||
# call obj.method(*args) without any checks
|
||||
def checkcall(self, obj, methodname, *args):
|
||||
|
@ -1195,6 +1197,10 @@ class MixinStrUnicodeUserStringTest:
|
|||
|
||||
self.checkraises(TypeError, 'abc', '__getitem__', 'def')
|
||||
|
||||
for idx_type in ('def', object()):
|
||||
expected_msg = "string indices must be integers, not '{}'".format(type(idx_type).__name__)
|
||||
self.checkraises(TypeError, 'abc', '__getitem__', idx_type, expected_msg=expected_msg)
|
||||
|
||||
def test_slice(self):
|
||||
self.checkequal('abc', 'abc', '__getitem__', slice(0, 1000))
|
||||
self.checkequal('abc', 'abc', '__getitem__', slice(0, 3))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue