簡體   English   中英

pytest捕獲所有輸出到stdout

[英]pytest capturing all output to stdout

我測試了這樣打印的“當前行”

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)。 無論如何這有可能嗎?

醫生說:

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM