mocker can not replace a object/module two times
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mocker |
Invalid
|
Undecided
|
Gustavo Niemeyer |
Bug Description
Mocker is unable to replace a object/module two times:
>>> import mocker
>>> m = mocker.Mocker()
>>> dt = m.replace(
>>> dt()
<mocker.Mock object at 0x859ea6c>
>>> m.result('my datetime')
>>> m.replay()
>>> from datetime import datetime
>>> datetime()
'my datetime'
>>> m.restore()
>>> from datetime import datetime
>>> datetime() # the original
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Required argument 'year' (pos 1) not found
>>> dt_new = m.replace(
>>> dt_new()
<mocker.Mock object at 0x859eecc>
>>> m.result('other datetime')
>>> m.replay()
>>> from datetime import datetime
>>> datetime()
'my datetime'
>>>
The API is being used improperly:
def restore(self):
"""Restore changes in the environment, and return to recording mode.
def reset(self):
"""Reset the mocker state.
This will restore environment changes, if currently in replay
mode, and then remove all events previously recorded.
"""