我测试了这样打印的'当前行'
def test_clear(capsys):
out = capsys.readouterr()
outputs_more_than_one_line()
assert out.out == 'last line printed'
# impossible to check previously printed lines?
但是,我想检查所有打印的内容。我考虑过monkeypatching builtins.print
,但这似乎并不健全(不捕获sys.write.stdout)。无论如何这有可能吗?
答案 0 :(得分:4)
doc说:
readouterr()
调用到目前为止对输出进行快照 - 并且将继续捕获。
因此,您应该在打印行之后调用readouterr
,而不是之前:
def test_cap(capsys):
for _ in range(2):
print('outputs_more_than_one_line')
out = capsys.readouterr()
assert out.out != 'last line printed'