Index: Lib/unittest/test/test_runner.py =================================================================== --- Lib/unittest/test/test_runner.py (revision 87568) +++ Lib/unittest/test/test_runner.py (working copy) @@ -299,3 +299,18 @@ self.assertEqual(out.count(msg), 3) for msg in [ae_msg, at_msg]: self.assertEqual(out.count(msg), 1) + + def testStdErrLookedUpAtInstantiationTime(self): + # see issue 10786 + old_stderr = sys.stderr + f = io.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 = io.StringIO() + runner = unittest.TextTestRunner(f) + self.assertTrue(runner.stream.stream is f) Index: Lib/unittest/runner.py =================================================================== --- Lib/unittest/runner.py (revision 87568) +++ Lib/unittest/runner.py (working copy) @@ -125,8 +125,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, warnings=None): + if stream is None: + stream = sys.stderr self.stream = _WritelnDecorator(stream) self.descriptions = descriptions self.verbosity = verbosity