Comment on Super Simple Mocking For PythonComments−johnrob14yThe line where the original attributes are backed up needs to be a deep copy (otherwise the updates will affect the backed up dictionary):self.orig = self.obj.__dict__Should be more like:self.orig = self.obj.__dict__.copy()−surething14yAgreed. I did the following: def __enter__(self): self.original = dict(self.obj.__dict__) self.obj.__dict__.update(self.mocks) return self def __exit__(self, typ, val, traceback): self.obj.__dict__ = self.original This doesn't perform a deep copy, but prevents modifications on self.obj.__dict__ from modifying self.original also.
Comments
The line where the original attributes are backed up needs to be a deep copy (otherwise the updates will affect the backed up dictionary):
self.orig = self.obj.__dict__
Should be more like:
self.orig = self.obj.__dict__.copy()
Agreed. I did the following:
This doesn't perform a deep copy, but prevents modifications on self.obj.__dict__ from modifying self.original also.