mirror of
https://github.com/python/cpython.git
synced 2025-07-29 06:05:00 +00:00
[3.13] gh-65454: avoid triggering call to a PropertyMock in NonCallableMock.__setattr__ (GH-120019) (#120336)
gh-65454: avoid triggering call to a PropertyMock in NonCallableMock.__setattr__ (GH-120019)
(cherry picked from commit 9e9ee50421
)
Co-authored-by: blhsing <blhsing@gmail.com>
This commit is contained in:
parent
aba5f2a4d1
commit
81eae21733
3 changed files with 12 additions and 0 deletions
|
@ -1127,6 +1127,14 @@ class TestCallList(unittest.TestCase):
|
|||
p.assert_called_once_with()
|
||||
|
||||
|
||||
def test_propertymock_attach(self):
|
||||
m = Mock()
|
||||
p = PropertyMock()
|
||||
type(m).foo = p
|
||||
m.attach_mock(p, 'foo')
|
||||
self.assertEqual(m.mock_calls, [])
|
||||
|
||||
|
||||
class TestCallablePredicate(unittest.TestCase):
|
||||
|
||||
def test_type(self):
|
||||
|
|
|
@ -830,6 +830,9 @@ class NonCallableMock(Base):
|
|||
mock_name = f'{self._extract_mock_name()}.{name}'
|
||||
raise AttributeError(f'Cannot set {mock_name}')
|
||||
|
||||
if isinstance(value, PropertyMock):
|
||||
self.__dict__[name] = value
|
||||
return
|
||||
return object.__setattr__(self, name, value)
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
:func:`unittest.mock.Mock.attach_mock` no longer triggers a call to a ``PropertyMock`` being attached.
|
Loading…
Add table
Add a link
Reference in a new issue