Add Mock.assert_called()
Issue #26323: Add assert_called() and assert_called_once() methods to unittest.mock.Mock.
This commit is contained in:
parent
82442b7022
commit
2c2a4e63d7
|
@ -259,6 +259,34 @@ the *new_callable* argument to :func:`patch`.
|
||||||
used to set attributes on the mock after it is created. See the
|
used to set attributes on the mock after it is created. See the
|
||||||
:meth:`configure_mock` method for details.
|
:meth:`configure_mock` method for details.
|
||||||
|
|
||||||
|
.. method:: assert_called(*args, **kwargs)
|
||||||
|
|
||||||
|
Assert that the mock was called at least once.
|
||||||
|
|
||||||
|
>>> mock = Mock()
|
||||||
|
>>> mock.method()
|
||||||
|
<Mock name='mock.method()' id='...'>
|
||||||
|
>>> mock.method.assert_called()
|
||||||
|
|
||||||
|
.. versionadded:: 3.6
|
||||||
|
|
||||||
|
.. method:: assert_called_once(*args, **kwargs)
|
||||||
|
|
||||||
|
Assert that the mock was called exactly once.
|
||||||
|
|
||||||
|
>>> mock = Mock()
|
||||||
|
>>> mock.method()
|
||||||
|
<Mock name='mock.method()' id='...'>
|
||||||
|
>>> mock.method.assert_called_once()
|
||||||
|
>>> mock.method()
|
||||||
|
<Mock name='mock.method()' id='...'>
|
||||||
|
>>> mock.method.assert_called_once()
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
AssertionError: Expected 'method' to have been called once. Called 2 times.
|
||||||
|
|
||||||
|
.. versionadded:: 3.6
|
||||||
|
|
||||||
|
|
||||||
.. method:: assert_called_with(*args, **kwargs)
|
.. method:: assert_called_with(*args, **kwargs)
|
||||||
|
|
||||||
|
|
|
@ -161,6 +161,18 @@ telnetlib
|
||||||
Stéphane Wirtel in :issue:`25485`).
|
Stéphane Wirtel in :issue:`25485`).
|
||||||
|
|
||||||
|
|
||||||
|
unittest.mock
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The :class:`~unittest.mock.Mock` class has the following improvements:
|
||||||
|
|
||||||
|
* Two new methods, :meth:`Mock.assert_called()
|
||||||
|
<unittest.mock.Mock.assert_called>` and :meth:`Mock.assert_called_once()
|
||||||
|
<unittest.mock.Mock.assert_called_once>` to check if the mock object
|
||||||
|
was called.
|
||||||
|
(Contributed by Amit Saha in :issue:`26323`.)
|
||||||
|
|
||||||
|
|
||||||
urllib.robotparser
|
urllib.robotparser
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|
|
@ -772,6 +772,24 @@ class NonCallableMock(Base):
|
||||||
(self._mock_name or 'mock', self.call_count))
|
(self._mock_name or 'mock', self.call_count))
|
||||||
raise AssertionError(msg)
|
raise AssertionError(msg)
|
||||||
|
|
||||||
|
def assert_called(_mock_self):
|
||||||
|
"""assert that the mock was called at least once
|
||||||
|
"""
|
||||||
|
self = _mock_self
|
||||||
|
if self.call_count == 0:
|
||||||
|
msg = ("Expected '%s' to have been called." %
|
||||||
|
self._mock_name or 'mock')
|
||||||
|
raise AssertionError(msg)
|
||||||
|
|
||||||
|
def assert_called_once(_mock_self):
|
||||||
|
"""assert that the mock was called only once.
|
||||||
|
"""
|
||||||
|
self = _mock_self
|
||||||
|
if not self.call_count == 1:
|
||||||
|
msg = ("Expected '%s' to have been called once. Called %s times." %
|
||||||
|
(self._mock_name or 'mock', self.call_count))
|
||||||
|
raise AssertionError(msg)
|
||||||
|
|
||||||
def assert_called_with(_mock_self, *args, **kwargs):
|
def assert_called_with(_mock_self, *args, **kwargs):
|
||||||
"""assert that the mock was called with the specified arguments.
|
"""assert that the mock was called with the specified arguments.
|
||||||
|
|
||||||
|
|
|
@ -1222,6 +1222,27 @@ class MockTest(unittest.TestCase):
|
||||||
with self.assertRaises(AssertionError):
|
with self.assertRaises(AssertionError):
|
||||||
m.hello.assert_not_called()
|
m.hello.assert_not_called()
|
||||||
|
|
||||||
|
def test_assert_called(self):
|
||||||
|
m = Mock()
|
||||||
|
with self.assertRaises(AssertionError):
|
||||||
|
m.hello.assert_called()
|
||||||
|
m.hello()
|
||||||
|
m.hello.assert_called()
|
||||||
|
|
||||||
|
m.hello()
|
||||||
|
m.hello.assert_called()
|
||||||
|
|
||||||
|
def test_assert_called_once(self):
|
||||||
|
m = Mock()
|
||||||
|
with self.assertRaises(AssertionError):
|
||||||
|
m.hello.assert_called_once()
|
||||||
|
m.hello()
|
||||||
|
m.hello.assert_called_once()
|
||||||
|
|
||||||
|
m.hello()
|
||||||
|
with self.assertRaises(AssertionError):
|
||||||
|
m.hello.assert_called_once()
|
||||||
|
|
||||||
#Issue21256 printout of keyword args should be in deterministic order
|
#Issue21256 printout of keyword args should be in deterministic order
|
||||||
def test_sorted_call_signature(self):
|
def test_sorted_call_signature(self):
|
||||||
m = Mock()
|
m = Mock()
|
||||||
|
|
|
@ -1267,6 +1267,7 @@ Bernt Røskar Brenna
|
||||||
Constantina S.
|
Constantina S.
|
||||||
Patrick Sabin
|
Patrick Sabin
|
||||||
Sébastien Sablé
|
Sébastien Sablé
|
||||||
|
Amit Saha
|
||||||
Suman Saha
|
Suman Saha
|
||||||
Hajime Saitou
|
Hajime Saitou
|
||||||
George Sakkis
|
George Sakkis
|
||||||
|
|
|
@ -201,6 +201,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #26323: Add Mock.assert_called() and Mock.assert_called_once()
|
||||||
|
methods to unittest.mock. Patch written by Amit Saha.
|
||||||
|
|
||||||
- Issue #20589: Invoking Path.owner() and Path.group() on Windows now raise
|
- Issue #20589: Invoking Path.owner() and Path.group() on Windows now raise
|
||||||
NotImplementedError instead of ImportError.
|
NotImplementedError instead of ImportError.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue