The reason I didn't use the return_value kwarg to patch in this case is because I wanted to bind the data variable within the local scope so that I could reference it later in the test. You may have noticed that later in this test suite I do make use of the return_value kwarg to patch, so I'm certainly not averse to using it when I can :). 

As for the using patch as a context manger instead of as a decorator, I've found the decorator syntax to be more readable, even with the reverse argument order mess, than nested context managers (even when using contextlib.nested), which are needed for python 2.6 support. If we were only going to support 2.7+, I could get behind using that syntax for multiple context managers, but even then I still think the decorators are more readable.