Index: Lib/unittest/test/test_runner.py =================================================================== --- Lib/unittest/test/test_runner.py (revision 87568) +++ Lib/unittest/test/test_runner.py (working copy) @@ -1,5 +1,6 @@ import unittest +import sys from cStringIO import StringIO import pickle @@ -248,6 +249,20 @@ expectedresult = (runner.stream, DESCRIPTIONS, VERBOSITY) self.assertEqual(runner._makeResult(), expectedresult) + def testStdErrLookedUpAtInstantiationTime(self): + # see issue 10786 + old_stderr = sys.stderr + f = StringIO() + sys.stderr = f + runner = unittest.TextTestRunner() + self.assertTrue(runner.stream.stream is f) + sys.stderr = old_stderr + def testSpecifiedStreamUsed(self): + # see issue 10786 + f = StringIO() + runner = unittest.TextTestRunner(f) + self.assertTrue(runner.stream.stream is f) + if __name__ == '__main__': unittest.main() Index: Lib/unittest/runner.py =================================================================== --- Lib/unittest/runner.py (revision 87568) +++ Lib/unittest/runner.py (working copy) @@ -124,8 +124,10 @@ """ resultclass = TextTestResult - def __init__(self, stream=sys.stderr, descriptions=True, verbosity=1, + def __init__(self, stream=None, descriptions=True, verbosity=1, failfast=False, buffer=False, resultclass=None): + if stream is None: + stream = sys.stderr self.stream = _WritelnDecorator(stream) self.descriptions = descriptions self.verbosity = verbosity