mirror of https://github.com/python/cpython
Generalize test.test_support.test_stdout() with a base context manager so that
it is easy to capture stderr if desired.
This commit is contained in:
parent
d48a2f77f0
commit
8d2a90af2d
|
@ -392,19 +392,23 @@ def transient_internet():
|
|||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def captured_stdout():
|
||||
"""Run the with statement body using a StringIO object as sys.stdout.
|
||||
Example use::
|
||||
def captured_output(stream_name):
|
||||
"""Run the 'with' statement body using a StringIO object in place of a
|
||||
specific attribute on the sys module.
|
||||
Example use (with 'stream_name=stdout')::
|
||||
|
||||
with captured_stdout() as s:
|
||||
print "hello"
|
||||
assert s.getvalue() == "hello"
|
||||
"""
|
||||
import StringIO
|
||||
orig_stdout = sys.stdout
|
||||
sys.stdout = StringIO.StringIO()
|
||||
yield sys.stdout
|
||||
sys.stdout = orig_stdout
|
||||
orig_stdout = getattr(sys, stream_name)
|
||||
setattr(sys, stream_name, StringIO.StringIO())
|
||||
yield getattr(sys, stream_name)
|
||||
setattr(sys, stream_name, orig_stdout)
|
||||
|
||||
def captured_stdout():
|
||||
return captured_output("stdout")
|
||||
|
||||
|
||||
#=======================================================================
|
||||
|
|
Loading…
Reference in New Issue