I frequently found myself wanting to know this information for unexpected 500s. It seems like the current assert_response message on failure is OK for other responses because you likely have code which triggers different responses within your request body which would make debugging a clear path. In the case of a 500, it could be just about anything that blew up, so it would be real nice to know what exactly without having to guess or open the browser to see the error page.
In some cases opening the browser wouldn't even help, it seems. For example, when a Mocha expectation was not met, I found it being set as the template exception rather than surfaced as a failure as it usually is. Perhaps this points to a different problem altogether, I'm not sure.. at any rate, I find this hack useful.
On a perhaps less important note regarding my implementation, I find it a little odd that the template instance doesn't surface an accessor for its @exception. Quick searches for 'exception' in ActionView::Base and TestProcess didn't yield anything, so I'm calling this good enough. But, perhaps a detail to consider. I only found how the message was stored by doing :inspect on the whole response object and wading through the output.