import mock mock_func = mock.Mock() mock_func.return_value = 42 print mock_func(6, 9) mock_func.assert_called_with(6, 9) mock_func.assert_called_with(6, 7) mock_class = mock.NonCallableMock() mock_class.some_method.return_value = 42 print mock_class.some_method(6, 9) mock_class.some_method.assert_called_once_with(6, 9) mock_func_w_side_effect = mock.Mock() mock_func_w_side_effect.side_effect = ValueError('Wrong!') mock_func_w_side_effect() mock_func_w_side_effect.side_effect = lambda x, y: x + y mock_func_w_side_effect('spam', 'SPAM') import json def func_with_json(d): return json.dumps(d) d = {'a': 1, 'b': [2, 3]} # a simple input for func_with_json with mock.patch('json.dumps') as mock_dumps: mock_dumps.return_value = 'JSON' r = func_with_json(d) assert r == 'JSON' mock_dumps.assert_called_once_with(d) print json.dumps(d) @mock.patch('json.dumps') def test_func_with_json(mock_dumps): mock_dumps.return_value = 'JSON' r = func_with_json({'c': {'d': [4]}}) assert r == 'JSON' mock_dumps.assert_called_once_with(d) # whoops, we didn't pass in d, this should fail. test_func_with_json()