I realize unittest.mock
objects now have an assert_not_called
method available, but what I’m looking for is an assert_not_called_with
. Is there anything like that? I looked on Google and didn’t see anything, and when I tried just using mock_function.assert_not_called_with(...)
it raised an AttributeError
, meaning the function does not exist with that name.
My current solution
with self.assertRaises(AssertionError): mock_function.assert_called_with(arguments_I_want_to_test)
This works but clutters the code if I have several such calls I want to make.
Related
Assert a function/method was not called using Mock
Advertisement
Answer
You can add a assert_not_called_with
method to unittest.mock.Mock
on your own:
from unittest.mock import Mock def assert_not_called_with(self, *args, **kwargs): try: self.assert_called_with(*args, **kwargs) except AssertionError: return raise AssertionError('Expected %s to not have been called.' % self._format_mock_call_signature(args, kwargs)) Mock.assert_not_called_with = assert_not_called_with
so that:
m = Mock() m.assert_not_called_with(1, 2, a=3) m(3, 4, b=5) m.assert_not_called_with(3, 4, b=5)
outputs:
AssertionError: Expected mock(3, 4, b=5) to not have been called.