mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-91803: Mock - fix error when using autospec methods with seal (#92213)
Fixes https://github.com/python/cpython/issues/91803. Co-authored-by: Karthikeyan Singaravelan <tir.karthi@gmail.com> Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
This commit is contained in:
parent
728e42fcf5
commit
c6325b1c9f
3 changed files with 8 additions and 1 deletions
|
@ -200,6 +200,9 @@ class TestSealable(unittest.TestCase):
|
|||
self.assertIsInstance(foo.Baz.baz, mock.NonCallableMagicMock)
|
||||
self.assertIsInstance(foo.Baz.ban, mock.MagicMock)
|
||||
|
||||
# see gh-91803
|
||||
self.assertIsInstance(foo.bar2(), mock.MagicMock)
|
||||
|
||||
self.assertEqual(foo.bar1(), 'a')
|
||||
foo.bar1.return_value = 'new_a'
|
||||
self.assertEqual(foo.bar1(), 'new_a')
|
||||
|
@ -212,7 +215,7 @@ class TestSealable(unittest.TestCase):
|
|||
with self.assertRaises(AttributeError):
|
||||
foo.bar = 1
|
||||
with self.assertRaises(AttributeError):
|
||||
foo.bar2()
|
||||
foo.bar2().x
|
||||
|
||||
foo.bar2.return_value = 'bar2'
|
||||
self.assertEqual(foo.bar2(), 'bar2')
|
||||
|
|
|
@ -2745,6 +2745,7 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None,
|
|||
_new_parent=parent,
|
||||
**kwargs)
|
||||
mock._mock_children[entry] = new
|
||||
new.return_value = child_klass()
|
||||
_check_signature(original, new, skipfirst=skipfirst)
|
||||
|
||||
# so functions created with _set_signature become instance attributes,
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Fix an error when using a method of objects mocked with
|
||||
:func:`unittest.mock.create_autospec` after it was sealed with
|
||||
:func:`unittest.mock.seal` function.
|
Loading…
Add table
Add a link
Reference in a new issue