unittest.result.TestResult does not create its buffers until they're used. It uses StringIO not cStringIO. Issue 8333.
diff --git a/Lib/unittest/result.py b/Lib/unittest/result.py
index b9045f4..4b7cde6 100644
--- a/Lib/unittest/result.py
+++ b/Lib/unittest/result.py
@@ -4,7 +4,7 @@
 import sys
 import traceback
 
-from cStringIO import StringIO
+from StringIO import StringIO
 
 from . import util
 from functools import wraps
@@ -46,8 +46,8 @@
         self.unexpectedSuccesses = []
         self.shouldStop = False
         self.buffer = False
-        self._stdout_buffer = StringIO()
-        self._stderr_buffer = StringIO()
+        self._stdout_buffer = None
+        self._stderr_buffer = None
         self._original_stdout = sys.stdout
         self._original_stderr = sys.stderr
         self._mirrorOutput = False
@@ -60,6 +60,9 @@
         self.testsRun += 1
         self._mirrorOutput = False
         if self.buffer:
+            if self._stderr_buffer is None:
+                self._stderr_buffer = StringIO()
+                self._stdout_buffer = StringIO()
             sys.stdout = self._stdout_buffer
             sys.stderr = self._stderr_buffer