[3.7] bpo-35330: Don't call the wrapped object if side_effect is set (GH10973)#11035
Merged
Merged
Conversation
…0973) * 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. (cherry picked from commit f05df0a) Co-authored-by: Mario Corchero <mariocj89@gmail.com>
Contributor
Author
|
@mariocj89 and @cjw296: Status check is done, and it's a success ✅ . |
1 similar comment
Contributor
Author
|
@mariocj89 and @cjw296: Status check is done, and it's a success ✅ . |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
wrapsfunctionality inunittest.mock.MockAdd more tests to validate how
wrapsinteracts with other features ofmocks.
side_effectis setWhen a object is wrapped using
Mock(wraps=...), if an user sets aside_effectin one of their methods, return the value ofside_effectand don't call the original object.
mock_callWhen a
Mockis called, it should return looking up in the followingorder:
side_effect,return_value,wraps. If any of the first tworeturn
mock.DEFAULT, lookup in the next option.It makes no sense to check for
wrapsreturning default, as it issupposed to be the original implementation and there is nothing to
fallback to.
(cherry picked from commit f05df0a)
Co-authored-by: Mario Corchero mariocj89@gmail.com
https://bugs.python.org/issue35330