from unittest import mock class Example: def func1(self): data = {'key': None} for i in range(2): # edit dictionary inplace data['key'] = i self.inner(data) def func2(self): # generate dictionary def get_dict(val): return {'key': val} for i in range(2): data = get_dict(i) self.inner(data) def inner(self, val): print(val) def test_func1(): inst = Example() # replace it by MagicMock inst.inner = mock.MagicMock() inst.func1() inst.inner.assert_has_calls([ mock.call({'key': 0}), mock.call({'key': 1}) ]) def test_func2(): inst = Example() # replace it by MagicMock inst.inner = mock.MagicMock() inst.func2() inst.inner.assert_has_calls([ mock.call({'key': 0}), mock.call({'key': 1}) ])