It's a good question. We haven't been outputting any error information to stderr for testtools.run - it's all gone to stdout (tracebacks, attachments, etc).

There are two reasons for actively staying with stdout here:
 - history -  noone expects stderr from us at the moment, so folk might not be capturing stderr appropriately. - weak reason
 - This is arguably the output of the command rather than failure to perform the command. I mean - we didn't fail to import our own machinery - the python environment for testtools itself is ok, it's just the thing we were asked to query that has the problem. My general rule for splitting stdout and stderr is that stdout should contain all the requested output and stderr everything else: capturing stderr should never be needed in a semantic sense, and it would be here.