Karthikeyan Singaravelan <[email protected]> added the comment:
I guess the problem is that during the initial mock creation kwargs is passed
so calling test_method immediately after mock creation raises ValueError. But
as we loop through the attributes and create new child mock for the attributes
the original configured mock for the method that raises ValueError is
overridden by another object without the configuration info. Probably it makes
sense to call configure_mock again after all children mock are constructed.
Something like below works and I don't see any test failures in mock related
test cases.
index 2719f74d6f..585e875c95 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -2637,6 +2637,7 @@ def create_autospec(spec, spec_set=False, instance=False,
_parent=None,
f'[object={spec!r}]')
is_async_func = _is_async_func(spec)
_kwargs = {'spec': spec}
+ original_kwargs = kwargs
if spec_set:
_kwargs = {'spec_set': spec}
elif spec is None:
@@ -2740,6 +2741,9 @@ def create_autospec(spec, spec_set=False, instance=False,
_parent=None,
if isinstance(new, FunctionTypes):
setattr(mock, entry, new)
+ if _is_instance_mock(mock):
+ mock.configure_mock(**original_kwargs)
+
return mock
----------
components: +Library (Lib) -Tests
nosy: +cjw296, lisroach, mariocj89, michael.foord
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue46690>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com