Pycharmユニットテストのインタラクティブデバッグコマンドラインが機能しない 質問する

Pycharmユニットテストのインタラクティブデバッグコマンドラインが機能しない 質問する

ユニット テストをデバッグする場合 (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フラグは、鼻の検査

おすすめ記事