ユニット テストをデバッグする場合 (pycharm テスト ランナー経由)、対話型コマンド ラインをオンにできますが、(通常のスクリプトをデバッグする場合とは異なり) 入力したコマンドは出力を生成しません。実際のところ、stderr が期待どおりに動作するため、stdout はどこかでキャプチャされているようです。
>>> print "a"
>>> import sys
>>> sys.stderr.write("moof")
moof
>>> sys.stdout.write("moof")
>>> sys.stderr.write("test")
test
これは想定された動作ですか? インタラクティブなデバッグ コンソールは本当に気に入っており、ユニット テストのデバッグ時にも適切に動作すれば素晴らしいと思います。
ベストアンサー1
これは、テスト ランナーが stdout をキャプチャしているが、stderr をキャプチャしていないことが原因である可能性があります。
私が使うpy.テストどれのstdoutとstderrの両方をキャプチャしますそのため、出力はまったく表示されません。出力を表示するには、-s
フラグを py.test ランナーに渡す必要があります。これは、実行/デバッグ構成を変更し、このフラグをオプション フィールドに追加することで実行できます。(実行 > 構成の編集 > デフォルト > Python テスト > py.test > -s
「追加の引数」フィールドに追加)
>>> print 'a'
a
>>> import sys
>>> sys.stderr.write('moof')
moof
>>> sys.stdout.write('moof')
moof
>>> sys.stderr.write('test')
test
注: この-s
フラグは、鼻の検査