gh-113569: Display calls in Mock.assert_has_calls failure when empty (GH-113573)

This commit is contained in:
wookie184 2024-01-04 19:11:34 +00:00 committed by GitHub
parent 1ae7ceba29
commit 1600d78e2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 18 deletions

View file

@ -1547,25 +1547,33 @@ class MockTest(unittest.TestCase):
mock = Mock(spec=f)
mock(1)
with self.assertRaisesRegex(
AssertionError,
'^{}$'.format(
re.escape('Calls not found.\n'
'Expected: [call()]\n'
' Actual: [call(1)]'))) as cm:
with self.assertRaises(AssertionError) as cm:
mock.assert_has_calls([call()])
self.assertEqual(str(cm.exception),
'Calls not found.\n'
'Expected: [call()]\n'
' Actual: [call(1)]'
)
self.assertIsNone(cm.exception.__cause__)
uncalled_mock = Mock()
with self.assertRaises(AssertionError) as cm:
uncalled_mock.assert_has_calls([call()])
self.assertEqual(str(cm.exception),
'Calls not found.\n'
'Expected: [call()]\n'
' Actual: []'
)
self.assertIsNone(cm.exception.__cause__)
with self.assertRaisesRegex(
AssertionError,
'^{}$'.format(
re.escape(
'Error processing expected calls.\n'
"Errors: [None, TypeError('too many positional arguments')]\n"
"Expected: [call(), call(1, 2)]\n"
' Actual: [call(1)]'))) as cm:
with self.assertRaises(AssertionError) as cm:
mock.assert_has_calls([call(), call(1, 2)])
self.assertEqual(str(cm.exception),
'Error processing expected calls.\n'
"Errors: [None, TypeError('too many positional arguments')]\n"
'Expected: [call(), call(1, 2)]\n'
' Actual: [call(1)]'
)
self.assertIsInstance(cm.exception.__cause__, TypeError)
def test_assert_any_call(self):