Merge #17987: properly document support.captured_xxx.

This commit is contained in:
R David Murray 2013-07-11 12:29:31 -04:00
commit e173d01231
4 changed files with 47 additions and 16 deletions

View File

@ -362,17 +362,29 @@ The :mod:`test.support` module defines the following functions:
New optional arguments *filters* and *quiet*. New optional arguments *filters* and *quiet*.
.. function:: captured_stdout() .. function:: captured_stdin()
captured_stdout()
captured_stderr()
A context manager that runs the :keyword:`with` statement body using a A context managers that temporarily replaces the named stream with
:class:`io.StringIO` object as sys.stdout. That object can be retrieved :class:`io.StringIO` object.
using the ``as`` clause of the :keyword:`with` statement.
Example use:: Example use with output streams::
with captured_stdout() as s: with captured_stdout() as stdout, captured_stderr() as stderr:
print("hello") print("hello")
assert s.getvalue() == "hello\n" print("error", file=sys.stderr)
assert stdout.getvalue() == "hello\n"
assert stderr.getvalue() == "error\n"
Example use with input stream::
with captured_stdin() as stdin:
stdin.write('hello\n')
stdin.seek(0)
# call test code that consumes from sys.stdin
captured = input()
self.assertEqual(captured, "hello")
.. function:: temp_cwd(name='tempcwd', quiet=False, path=None) .. function:: temp_cwd(name='tempcwd', quiet=False, path=None)

View File

@ -1186,16 +1186,31 @@ def captured_output(stream_name):
def captured_stdout(): def captured_stdout():
"""Capture the output of sys.stdout: """Capture the output of sys.stdout:
with captured_stdout() as s: with captured_stdout() as stdout:
print("hello") print("hello")
self.assertEqual(s.getvalue(), "hello") self.assertEqual(stdout.getvalue(), "hello\n")
""" """
return captured_output("stdout") return captured_output("stdout")
def captured_stderr(): def captured_stderr():
"""Capture the output of sys.stderr:
with captured_stderr() as stderr:
print("hello", file=sys.stderr)
self.assertEqual(stderr.getvalue(), "hello\n")
"""
return captured_output("stderr") return captured_output("stderr")
def captured_stdin(): def captured_stdin():
"""Capture the input to sys.stdin:
with captured_stdin() as stdin:
stdin.write('hello\n')
stdin.seek(0)
# call test code that consumes from sys.stdin
captured = input()
self.assertEqual(captured, "hello")
"""
return captured_output("stdin") return captured_output("stdin")

View File

@ -130,19 +130,22 @@ class TestSupport(unittest.TestCase):
self.assertNotIn("bar", sys.path) self.assertNotIn("bar", sys.path)
def test_captured_stdout(self): def test_captured_stdout(self):
with support.captured_stdout() as s: with support.captured_stdout() as stdout:
print("hello") print("hello")
self.assertEqual(s.getvalue(), "hello\n") self.assertEqual(stdout.getvalue(), "hello\n")
def test_captured_stderr(self): def test_captured_stderr(self):
with support.captured_stderr() as s: with support.captured_stderr() as stderr:
print("hello", file=sys.stderr) print("hello", file=sys.stderr)
self.assertEqual(s.getvalue(), "hello\n") self.assertEqual(stderr.getvalue(), "hello\n")
def test_captured_stdin(self): def test_captured_stdin(self):
with support.captured_stdin() as s: with support.captured_stdin() as stdin:
print("hello", file=sys.stdin) stdin.write('hello\n')
self.assertEqual(s.getvalue(), "hello\n") stdin.seek(0)
# call test code that consumes from sys.stdin
captured = input()
self.assertEqual(captured, "hello")
def test_gc_collect(self): def test_gc_collect(self):
support.gc_collect() support.gc_collect()

View File

@ -66,6 +66,7 @@ Luigi Ballabio
Jeff Balogh Jeff Balogh
Manuel Balsera Manuel Balsera
Matt Bandy Matt Bandy
Dmi Baranov
Michael J. Barber Michael J. Barber
Daniel Barclay Daniel Barclay
Nicolas Bareil Nicolas Bareil