tree 5a048fb3c7aef3ffebb5a955ae2259823d0b1d8f
parent 3cf74384b53b998fa846dc2590cedf9ad2a0d5fd
author Mario Corchero <mariocj89@gmail.com> 1544268302 +0000
committer Chris Withers <chris@withers.org> 1544268302 +0000

bpo-35330:  Don't call the wrapped object if `side_effect` is set (GH10973)

* tests: Further validate `wraps` functionality in `unittest.mock.Mock`

Add more tests to validate how `wraps` interacts with other features of
mocks.

* Don't call the wrapped object if `side_effect` is set

When a object is wrapped using `Mock(wraps=...)`, if an user sets a
`side_effect` in one of their methods, return the value of `side_effect`
and don't call the original object.

* Refactor what to be called on `mock_call`

When a `Mock` is called, it should return looking up in the following
order: `side_effect`, `return_value`, `wraps`. If any of the first two
return `mock.DEFAULT`, lookup in the next option.

It makes no sense to check for `wraps` returning default, as it is
supposed to be the original implementation and there is nothing to
fallback to.
