Could we do stdout/stderr here? 

Or would that require nexted context managers?

does sys.stdout need to be the context manager itself? It doesn't seem like anything needs to
write to 'out' directly (not sure capture.write actually get's called?)

if capture has a self.stdout/self.stderr, the tests could:

with Capture() as out:
     do_a_thing()
self.assertEquals(out.stderr.getvalue, 'this is in stderr')

(untested...)