diff -r e4ee0b15cc4f Doc/library/unittest.mock.rst --- a/Doc/library/unittest.mock.rst Wed Apr 16 23:32:21 2014 +0530 +++ b/Doc/library/unittest.mock.rst Thu Apr 17 00:33:19 2014 +0530 @@ -321,6 +321,18 @@ >>> 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. + .. method:: reset_mock() diff -r e4ee0b15cc4f Lib/unittest/mock.py --- a/Lib/unittest/mock.py Wed Apr 16 23:32:21 2014 +0530 +++ b/Lib/unittest/mock.py Thu Apr 17 00:33:19 2014 +0530 @@ -758,6 +758,14 @@ else: return _call + def assert_not_called(_mock_self, *args, **kwargs): + """assert that the mock was never called. + """ + self = _mock_self + if not 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 -r e4ee0b15cc4f Lib/unittest/test/testmock/testmock.py --- a/Lib/unittest/test/testmock/testmock.py Wed Apr 16 23:32:21 2014 +0530 +++ b/Lib/unittest/test/testmock/testmock.py Thu Apr 17 00:33:19 2014 +0530 @@ -1198,6 +1198,15 @@ 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 diff -r e4ee0b15cc4f Misc/NEWS --- a/Misc/NEWS Wed Apr 16 23:32:21 2014 +0530 +++ b/Misc/NEWS Thu Apr 17 00:33:19 2014 +0530 @@ -50,6 +50,9 @@ 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.