Я хочу видеть, как создаются экземпляры классов, и я хочу видеть, как используются методы этого класса.Я могу достичь первой цели, но код ниже демонстрирует, как я не могу шпионить за вызовами методов.Окончательное утверждение не выполнено.
import mock
class A:
def __init__(self, some_arg):
print("constructor")
def f(self, some_var):
print(some_var)
p = mock.patch('__main__.A', wraps=A)
m = p.start()
A = m
a = A('something')
a.f('my_arg')
assert mock.call('something') in m.mock_calls
assert m.method_calls # This fails, call to f is not tracked
Если я использую autospec = True, я могу видеть вызовы метода, но тогда сам метод не вызывается.Я хочу, чтобы фактический код выполнялся, я просто хочу шпионить за ним.
Я не могу сделать что-то вроде http://wesmckinney.com/blog/spying-with-python-mocks/, потому что у меня нет экземпляра класса.