File tree 4 files changed +24
-2
lines changed
4 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -156,6 +156,7 @@ Ronny Pfannschmidt
156
156
Ross Lawley
157
157
Russel Winder
158
158
Ryan Wooden
159
+ Samuel Dion-Girardeau
159
160
Samuele Pedroni
160
161
Segev Finer
161
162
Simon Gomizelj
Original file line number Diff line number Diff line change 4
4
"""
5
5
from __future__ import absolute_import , division , print_function
6
6
7
+ import collections
7
8
import contextlib
8
9
import sys
9
10
import os
@@ -306,6 +307,9 @@ def __getattr__(self, name):
306
307
return getattr (object .__getattribute__ (self , "buffer" ), name )
307
308
308
309
310
+ CaptureResult = collections .namedtuple ("CaptureResult" , ["out" , "err" ])
311
+
312
+
309
313
class MultiCapture (object ):
310
314
out = err = in_ = None
311
315
@@ -366,8 +370,8 @@ def stop_capturing(self):
366
370
367
371
def readouterr (self ):
368
372
""" return snapshot unicode value of stdout/stderr capturings. """
369
- return (self .out .snap () if self .out is not None else "" ,
370
- self .err .snap () if self .err is not None else "" )
373
+ return CaptureResult (self .out .snap () if self .out is not None else "" ,
374
+ self .err .snap () if self .err is not None else "" )
371
375
372
376
373
377
class NoCapture :
Original file line number Diff line number Diff line change
1
+ Return stdout/stderr capture results as a ``namedtuple``, so ``out`` and ``err`` can be accessed by attribute.
Original file line number Diff line number Diff line change @@ -922,6 +922,14 @@ def test_capturing_readouterr(self):
922
922
out , err = cap .readouterr ()
923
923
assert err == "error2"
924
924
925
+ def test_capture_results_accessible_by_attribute (self ):
926
+ with self .getcapture () as cap :
927
+ sys .stdout .write ("hello" )
928
+ sys .stderr .write ("world" )
929
+ capture_result = cap .readouterr ()
930
+ assert capture_result .out == "hello"
931
+ assert capture_result .err == "world"
932
+
925
933
def test_capturing_readouterr_unicode (self ):
926
934
with self .getcapture () as cap :
927
935
print ("hx\xc4 \x85 \xc4 \x87 " )
@@ -1083,6 +1091,14 @@ def test_using_capsys_fixture_works_with_sys_stdout_encoding(capsys):
1083
1091
assert err == ''
1084
1092
1085
1093
1094
+ def test_capsys_results_accessible_by_attribute (capsys ):
1095
+ sys .stdout .write ("spam" )
1096
+ sys .stderr .write ("eggs" )
1097
+ capture_result = capsys .readouterr ()
1098
+ assert capture_result .out == "spam"
1099
+ assert capture_result .err == "eggs"
1100
+
1101
+
1086
1102
@needsosdup
1087
1103
@pytest .mark .parametrize ('use' , [True , False ])
1088
1104
def test_fdcapture_tmpfile_remains_the_same (tmpfile , use ):
You can’t perform that action at this time.
0 commit comments