Я использую модуль Python mock для тестов. Я хотел бы заменить активный объект макетом и автоматически выполнить все вызовы, сделанные для объекта mock, перенаправленного на исходный объект. Я думаю, что это называется "шпион" в стандартной терминологии тестирования. На данный момент я делаю внутри теста:
# Insert a mock replacement
orig_active_attr = server.active_attr
server.active_attr = mock.Mock()
# Set up side effects to 'proxy' to the original object
server.active_attr.meth1.side_effect = orig_active_attr.meth1
server.active_attr.meth2.side_effect = orig_active_attr.meth2
# Call the method being tested
server.method_being_tested()
# Assert stuff on the mock.
server.active_attr.meth2.assert_called_once()
Было бы хорошо, если бы все вызовы методов на mock могли быть перенаправлены прямому объекту автоматически без шаблона.