poros
10/6/2015 - 1:42 AM

Mock side effect

Mock side effect

# raise exception
mock = Mock(side_effect=KeyError('foo'))
mock()
# KeyError: 'foo'


# return value based on argument
values = {'a': 1, 'b': 2, 'c': 3}
def side_effect(arg):
    return values[arg]

mock.side_effect = side_effect
mock('a'), mock('b'), mock('c')
(1, 2, 3)


# return value based on numbers of calls
mock.side_effect = [5, 4, 3, 2, 1]
mock(), mock(), mock()
(5, 4, 3)