diff options
author | Kushal Das <kushaldas@gmail.com> | 2014-04-16 20:06:14 (GMT) |
---|---|---|
committer | Kushal Das <kushaldas@gmail.com> | 2014-04-16 20:06:14 (GMT) |
commit | 8af9db3e4fa17fb7add3f904a19d816f7787ee1c (patch) | |
tree | 18ffd4eb5f027edb0648bd32088bb455ef2a3c59 | |
parent | 8c14534df6c7bd561fac31985fba60306e181265 (diff) | |
download | cpython-8af9db3e4fa17fb7add3f904a19d816f7787ee1c.zip cpython-8af9db3e4fa17fb7add3f904a19d816f7787ee1c.tar.gz cpython-8af9db3e4fa17fb7add3f904a19d816f7787ee1c.tar.bz2 |
Closes Issue 21262: New method assert_not_called for Mock.
It raises AssertionError if the mock has been called.
-rw-r--r-- | Doc/library/unittest.mock.rst | 14 | ||||
-rw-r--r-- | Lib/unittest/mock.py | 8 | ||||
-rw-r--r-- | Lib/unittest/test/testmock/testmock.py | 9 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
4 files changed, 34 insertions, 0 deletions
diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst index e6ca908..4f58892 100644 --- a/Doc/library/unittest.mock.rst +++ b/Doc/library/unittest.mock.rst @@ -321,6 +321,20 @@ the `new_callable` argument to `patch`. >>> calls = [call(4), call(2), call(3)] >>> mock.assert_has_calls(calls, any_order=True) + .. method:: assert_not_called(*args, **kwargs) + + Assert the mock was never called. + + >>> m = Mock() + >>> m.hello.assert_not_called() + >>> obj = m.hello() + >>> m.hello.assert_not_called() + Traceback (most recent call last): + ... + AssertionError: Expected 'hello' to not have been called. Called 1 times. + + .. versionadded:: 3.5 + .. method:: reset_mock() diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 48e7dd0..6c00bc6 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -758,6 +758,14 @@ class NonCallableMock(Base): else: return _call + def assert_not_called(_mock_self, *args, **kwargs): + """assert that the mock was never called. + """ + self = _mock_self + if self.call_count != 0: + msg = ("Expected '%s' to not have been called. Called %s times." % + (self._mock_name or 'mock', self.call_count)) + raise AssertionError(msg) def assert_called_with(_mock_self, *args, **kwargs): """assert that the mock was called with the specified arguments. diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index 59353a0..b65dc32 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -1198,6 +1198,15 @@ class MockTest(unittest.TestCase): m.assert_foo_call() m.assret_foo_call() + #Issue21262 + def test_assert_not_called(self): + m = Mock() + m.hello.assert_not_called() + m.hello() + with self.assertRaises(AssertionError): + m.hello.assert_not_called() + + def test_mock_add_spec(self): class _One(object): one = 1 @@ -50,6 +50,9 @@ Core and Builtins Library ------- +- Issue #21262: New method assert_not_called for Mock. + It raises AssertionError if the mock has been called. + - Issue #21238: New keyword argument `unsafe` to Mock. It raises `AttributeError` incase of an attribute startswith assert or assret. |