How to let MagicMock behave like a dict?
Why mess around with __iter__? It seems to me that you want to mess with __contains__: >>> import mock >>> m = mock.MagicMock() >>> d = {‘foo’: ‘bar’} >>> m.__getitem__.side_effect = d.__getitem__ >>> m.__iter__.side_effect = d.__iter__ >>> m[‘foo’] ‘bar’ >>> ‘foo’ in m False >>> m.__contains__.side_effect = d.__contains__ >>> ‘foo’ in m True