Closes issue 15323. Improve failure message of Mock.assert_called_once_with

This commit is contained in:
Michael Foord 2012-09-28 16:15:22 +01:00
parent 494502756e
commit 28d591ceef
4 changed files with 13 additions and 4 deletions

View file

@ -276,7 +276,7 @@ the `new_callable` argument to `patch`.
>>> mock.assert_called_once_with('foo', bar='baz') >>> mock.assert_called_once_with('foo', bar='baz')
Traceback (most recent call last): Traceback (most recent call last):
... ...
AssertionError: Expected to be called once. Called 2 times. AssertionError: Expected 'mock' to be called once. Called 2 times.
.. method:: assert_any_call(*args, **kwargs) .. method:: assert_any_call(*args, **kwargs)
@ -2020,7 +2020,7 @@ extremely handy: :meth:`~Mock.assert_called_with` and
>>> mock.assert_called_once_with(1, 2, 3) >>> mock.assert_called_once_with(1, 2, 3)
Traceback (most recent call last): Traceback (most recent call last):
... ...
AssertionError: Expected to be called once. Called 2 times. AssertionError: Expected 'mock' to be called once. Called 2 times.
Because mocks auto-create attributes on demand, and allow you to call them Because mocks auto-create attributes on demand, and allow you to call them
with arbitrary arguments, if you misspell one of these assert methods then with arbitrary arguments, if you misspell one of these assert methods then

View file

@ -731,8 +731,8 @@ class NonCallableMock(Base):
arguments.""" arguments."""
self = _mock_self self = _mock_self
if not self.call_count == 1: if not self.call_count == 1:
msg = ("Expected to be called once. Called %s times." % msg = ("Expected '%s' to be called once. Called %s times." %
self.call_count) (self._mock_name or 'mock', self.call_count))
raise AssertionError(msg) raise AssertionError(msg)
return self.assert_called_with(*args, **kwargs) return self.assert_called_with(*args, **kwargs)

View file

@ -463,6 +463,13 @@ class MockTest(unittest.TestCase):
mock.assert_called_with) mock.assert_called_with)
def test_assert_called_once_with_message(self):
mock = Mock(name='geoffrey')
self.assertRaisesRegex(AssertionError,
r"Expected 'geoffrey' to be called once\.",
mock.assert_called_once_with)
def test__name__(self): def test__name__(self):
mock = Mock() mock = Mock()
self.assertRaises(AttributeError, lambda: mock.__name__) self.assertRaises(AttributeError, lambda: mock.__name__)

View file

@ -36,6 +36,8 @@ Core and Builtins
Library Library
------- -------
- Issue #15323: improve failure message of Mock.assert_called_once_with
- Issue #16064: unittest -m claims executable is "python", not "python3" - Issue #16064: unittest -m claims executable is "python", not "python3"
- Issue #12376: Pass on parameters in TextTestResult.__init__ super call - Issue #12376: Pass on parameters in TextTestResult.__init__ super call