This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author xtreak
Recipients cjw296, lisroach, marchant.jm, mariocj89, michael.foord, xtreak
Date 2022-02-10.13:44:04
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1644500644.46.0.906291074683.issue46690@roundup.psfhosted.org>
In-reply-to
Content
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
History
Date User Action Args
2022-02-10 13:44:04xtreaksetrecipients: + xtreak, cjw296, michael.foord, lisroach, mariocj89, marchant.jm
2022-02-10 13:44:04xtreaksetmessageid: <1644500644.46.0.906291074683.issue46690@roundup.psfhosted.org>
2022-02-10 13:44:04xtreaklinkissue46690 messages
2022-02-10 13:44:04xtreakcreate