'Monkey patch an object for the duration of the test.
The monkey patch will be reverted at the end of the test using the
L{addCleanup} mechanism.
The L{monkey.MonkeyPatcher} is returned so that users can restore and
re-apply the monkey patch within their tests.
@param obj: The object to monkey patch.
@param attribute: The name of the attribute to change.
@param value: The value to set the attribute to.
@return: A L{monkey.MonkeyPatcher} object.'

def patch(self, obj, attribute, value):

    monkeyPatch = monkey.MonkeyPatcher((obj, attribute, value))
    monkeyPatch.patch()
    self.addCleanup(monkeyPatch.restore)
    return monkeyPatch
