Issue #10979. unittest stdout buffering now works for class and module fixtures.
diff --git a/Lib/unittest/result.py b/Lib/unittest/result.py
index 1f66f1b..2cc17d7 100644
--- a/Lib/unittest/result.py
+++ b/Lib/unittest/result.py
@@ -60,6 +60,9 @@
"Called when the given test is about to be run"
self.testsRun += 1
self._mirrorOutput = False
+ self._setupStdout()
+
+ def _setupStdout(self):
if self.buffer:
if self._stderr_buffer is None:
self._stderr_buffer = StringIO()
@@ -75,6 +78,10 @@
def stopTest(self, test):
"""Called when the given test has been run"""
+ self._restoreStdout()
+ self._mirrorOutput = False
+
+ def _restoreStdout(self):
if self.buffer:
if self._mirrorOutput:
output = sys.stdout.getvalue()
@@ -94,7 +101,6 @@
self._stdout_buffer.truncate()
self._stderr_buffer.seek(0)
self._stderr_buffer.truncate()
- self._mirrorOutput = False
def stopTestRun(self):
"""Called once after all tests are executed.