mirror of https://github.com/python/cpython
unittest.mock.PropertyMock return value and attributes are now standard MagicMocks
This commit is contained in:
parent
633b32a7fa
commit
c287062fcf
|
@ -712,6 +712,17 @@ have to create a dictionary and unpack it using `**`:
|
||||||
>>> mock_foo.mock_calls
|
>>> mock_foo.mock_calls
|
||||||
[call(), call(6)]
|
[call(), call(6)]
|
||||||
|
|
||||||
|
Because of the way mock attributes are stored you can't directly attach a
|
||||||
|
`PropertyMock` to a mock object. Instead you can attach it to the mock type
|
||||||
|
object::
|
||||||
|
|
||||||
|
>>> m = MagicMock()
|
||||||
|
>>> p = PropertyMock(return_value=3)
|
||||||
|
>>> type(m).foo = p
|
||||||
|
>>> m.foo
|
||||||
|
3
|
||||||
|
>>> p.assert_called_once_with()
|
||||||
|
|
||||||
|
|
||||||
Calling
|
Calling
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
|
@ -2166,6 +2166,9 @@ class PropertyMock(Mock):
|
||||||
Fetching a `PropertyMock` instance from an object calls the mock, with
|
Fetching a `PropertyMock` instance from an object calls the mock, with
|
||||||
no args. Setting it calls the mock with the value being set.
|
no args. Setting it calls the mock with the value being set.
|
||||||
"""
|
"""
|
||||||
|
def _get_child_mock(self, **kwargs):
|
||||||
|
return MagicMock(**kwargs)
|
||||||
|
|
||||||
def __get__(self, obj, obj_type):
|
def __get__(self, obj, obj_type):
|
||||||
return self()
|
return self()
|
||||||
def __set__(self, obj, val):
|
def __set__(self, obj, val):
|
||||||
|
|
|
@ -831,5 +831,16 @@ class TestCallList(unittest.TestCase):
|
||||||
p.stop()
|
p.stop()
|
||||||
|
|
||||||
|
|
||||||
|
def test_propertymock_returnvalue(self):
|
||||||
|
m = MagicMock()
|
||||||
|
p = PropertyMock()
|
||||||
|
type(m).foo = p
|
||||||
|
|
||||||
|
returned = m.foo
|
||||||
|
p.assert_called_once_with()
|
||||||
|
self.assertIsInstance(returned, MagicMock)
|
||||||
|
self.assertNotIsInstance(returned, PropertyMock)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue