]> granicus.if.org Git - python/commit
bpo-35330: Don't call the wrapped object if `side_effect` is set (GH10973)
authorMario Corchero <mariocj89@gmail.com>
Sat, 8 Dec 2018 11:25:02 +0000 (11:25 +0000)
committerChris Withers <chris@withers.org>
Sat, 8 Dec 2018 11:25:02 +0000 (11:25 +0000)
commitf05df0a4b679d0acfd0b1fe6187ba2d553b37afa
tree5a048fb3c7aef3ffebb5a955ae2259823d0b1d8f
parent3cf74384b53b998fa846dc2590cedf9ad2a0d5fd
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.
Lib/unittest/mock.py
Lib/unittest/test/testmock/testmock.py
Misc/NEWS.d/next/Library/2018-12-06-00-43-13.bpo-35330.abB4BN.rst [new file with mode: 0644]