Skip to content

Commit 1e48156

Browse files
authored
gh-120732: Fix name passing to Mock, when using kwargs to create_autospec (#120737)
1 parent ed5ae6c commit 1e48156

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
@@ -129,6 +129,11 @@ def test_create_autospec_should_be_configurable_by_kwargs(self):
129129
# pass kwargs with respect to the parent mock.
130130
self.assertEqual(class_mock().return_value.meth.side_effect, None)
131131

132+
def test_create_autospec_correctly_handles_name(self):
133+
class X: ...
134+
mock = create_autospec(X, spec_set=True, name="Y")
135+
self.assertEqual(mock._mock_name, "Y")
136+
132137
def test_repr(self):
133138
mock = Mock(name='foo')
134139
self.assertIn('foo', repr(mock))

Lib/unittest/mock.py

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

2758+
_name = kwargs.pop('name', _name)
2759+
_new_name = _name
2760+
if _parent is None:
2761+
# for a top level object no _new_name should be set
2762+
_new_name = ''
2763+
27582764
_kwargs.update(kwargs)
27592765

27602766
Klass = MagicMock
@@ -2772,13 +2778,6 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None,
27722778
elif is_type and instance and not _instance_callable(spec):
27732779
Klass = NonCallableMagicMock
27742780

2775-
_name = _kwargs.pop('name', _name)
2776-
2777-
_new_name = _name
2778-
if _parent is None:
2779-
# for a top level object no _new_name should be set
2780-
_new_name = ''
2781-
27822781
mock = Klass(parent=_parent, _new_parent=_parent, _new_name=_new_name,
27832782
name=_name, **_kwargs)
27842783

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)