Calls to autospecced mock functions are not recorded to mock_calls list of parent mock. This only happens if autospec is used and the original object is a function.
Example:
import unittest.mock as mock
def foo():
pass
parent = mock.Mock()
parent.child = mock.create_autospec(foo)
parent.child()
print(parent.mock_calls)
Output:
[]
Expected output:
[call.child()]
It works fine if foo function is substituted with a class.
Initially I came across this problem with patch() and attach_mock() but I simplified it for the demonstration. |