While I was refactoring and adding tests for a pretty hairy method, I found that I wanted to mock out some methods on the object so that they just returned whatever value was passed into them. It turns out that's pretty easy to do, although it took me a little while to figure it out. To save you (and future me) the time, here's how.
Given an instance request with a method complex_method which takes a single argument, replace complex_method with a mock which returns the argument unchanged:
from mock import Mock request.complex_method = Mock(side_effect=lambda arg: arg)
Subsequent calls to complex_method will return unchanged whatever you pass it:
>>> request.complex_method(True) True >>> request.complex_method(False) False >>> request.complex_method('amazing!') 'amazing!'