The majority of the time, the caching is just being done on request.user, which is a single object. I'm not sure I follow why your tests were failing, since the cache is just that, a cache. If you use a new user object, you should get the same thing as the older cached object (although I guess if you look at an older user object after updating it, then I could see you running into a problem).