0
0
PyTesttesting~5 mins

capfd for file descriptors in PyTest - Cheat Sheet & Quick Revision

Choose your learning style9 modes available
Recall & Review
beginner
What does the pytest fixture capfd capture?
The capfd fixture captures output sent to the system file descriptors stdout and stderr. This means it captures output from print statements and error messages during test execution.
Click to reveal answer
beginner
How do you retrieve the captured output using capfd in a pytest test?
You call out, err = capfd.readouterr() inside your test. out contains the captured standard output, and err contains the captured standard error.
Click to reveal answer
intermediate
Why is capfd useful compared to capturing output with capsys?
capfd captures output at the file descriptor level, so it can capture output from C extensions or subprocesses, while capsys captures output at the Python sys module level only.
Click to reveal answer
intermediate
What happens if you call capfd.readouterr() multiple times in the same test?
Each call to <code>readouterr()</code> returns the output captured since the last call and clears the buffer. So multiple calls let you check output in stages.
Click to reveal answer
intermediate
Can capfd capture output from subprocesses spawned during a test?
Yes, because capfd captures output at the file descriptor level, it can capture output from subprocesses, unlike capsys.
Click to reveal answer
What does capfd capture in pytest?
AOnly logging messages
BOnly Python print statements
COutput sent to system file descriptors stdout and stderr
DOnly exceptions
How do you get the captured output from capfd?
AUsing <code>capfd.readouterr()</code>
BUsing <code>capfd.get_output()</code>
CUsing <code>capfd.capture()</code>
DUsing <code>capfd.output()</code>
Which is true about capfd compared to capsys?
A<code>capsys</code> captures output at the file descriptor level
B<code>capfd</code> only captures Python sys.stdout
C<code>capsys</code> captures subprocess output
D<code>capfd</code> captures output at the file descriptor level
What happens when you call capfd.readouterr() multiple times?
AIt returns output since last call and clears buffer
BIt returns the same output every time
CIt raises an error
DIt disables output capture
Can capfd capture output from subprocesses?
ANo, it only captures Python output
BYes, because it captures at file descriptor level
COnly if subprocess uses Python print
DOnly if subprocess is run with special flags
Explain how the pytest fixture capfd works and when you would use it.
Think about capturing output beyond just Python print statements.
You got /4 concepts.
    Describe the difference between capfd and capsys in pytest.
    Consider the level at which output is captured.
    You got /4 concepts.