Skip to content

Commit 34ace5b

Browse files
[3.12] gh-120732: Fix name passing to Mock, when using kwargs to create_autospec (GH-120737) (#120761)
gh-120732: Fix `name` passing to `Mock`, when using kwargs to `create_autospec` (GH-120737) (cherry picked from commit 1e48156) Co-authored-by: Nikita Sobolev <[email protected]>
1 parent d6a36c9 commit 34ace5b

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

Lib/test/test_unittest/testmock/testmock.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ def test_create_autospec_should_be_configurable_by_kwargs(self):
118118
# pass kwargs with respect to the parent mock.
119119
self.assertEqual(class_mock().return_value.meth.side_effect, None)
120120

121+
def test_create_autospec_correctly_handles_name(self):
122+
class X: ...
123+
mock = create_autospec(X, spec_set=True, name="Y")
124+
self.assertEqual(mock._mock_name, "Y")
125+
121126
def test_repr(self):
122127
mock = Mock(name='foo')
123128
self.assertIn('foo', repr(mock))

Lib/unittest/mock.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2725,6 +2725,12 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None,
27252725
if not unsafe:
27262726
_check_spec_arg_typos(kwargs)
27272727

2728+
_name = kwargs.pop('name', _name)
2729+
_new_name = _name
2730+
if _parent is None:
2731+
# for a top level object no _new_name should be set
2732+
_new_name = ''
2733+
27282734
_kwargs.update(kwargs)
27292735

27302736
Klass = MagicMock
@@ -2742,13 +2748,6 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None,
27422748
elif is_type and instance and not _instance_callable(spec):
27432749
Klass = NonCallableMagicMock
27442750

2745-
_name = _kwargs.pop('name', _name)
2746-
2747-
_new_name = _name
2748-
if _parent is None:
2749-
# for a top level object no _new_name should be set
2750-
_new_name = ''
2751-
27522751
mock = Klass(parent=_parent, _new_parent=_parent, _new_name=_new_name,
27532752
name=_name, **_kwargs)
27542753

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix ``name`` passing to :class:`unittest.mock.Mock` object when using
2+
:func:`unittest.mock.create_autospec`.

0 commit comments

Comments
 (0)