Spy.py 522 B

1234567891011121314151617
  1. class Spy:
  2. def __init__(self, obj, func_name):
  3. self.obj = obj
  4. self.func_name = func_name
  5. self.func_original = getattr(self.obj, func_name)
  6. self.calls = []
  7. def __enter__(self, *args, **kwargs):
  8. def loggedFunc(cls, *args, **kwags):
  9. print "Logging", self, args, kwargs
  10. self.calls.append(args)
  11. return self.func_original(cls, *args, **kwargs)
  12. setattr(self.obj, self.func_name, loggedFunc)
  13. return self.calls
  14. def __exit__(self, *args, **kwargs):
  15. setattr(self.obj, self.func_name, self.func_original)