2016-08-02 5 views
1

pytestのキャプチャ動作を変更することは可能ですか?pytestのキャプチャを1つのテストで変更する

私はpytestと一緒に使うテストをたくさんしています。いくつかのテストでは印刷するのに便利な数量がいくつかあるので、フラグを使用してpytest出力に表示します。しかし、私はまた、印刷された警告をテストし、醜いと気を散らすように見える。私はいつものように警告を表示しないようにwarnings.simplefilterを使ってみましたが、何もしないようです。 (たぶんpytestはそれをハックします)とにかく、私は警告を静かにするが、それらが持ち上げられていることを確認し、他の印刷ステートメントからキャプチャされた出力を見ることができるかどうかを確認したい。これを行う方法はありますか?たとえば、1つのテスト機能のキャプチャを変更しますか?

答えて

1

私は手動でstderrをリダイレクトすることでそれをやった:

import os 
import sys 
import warnings 
import pytest 

def test(): 
    stderr = sys.stderr 
    sys.stderr = open(os.devnull, 'w') 
    with pytest.warns(UserWarning): 
     warnings.warn("Warning!", UserWarning) 
    sys.stderr = stderr 

がよい測定のために、私は同様に他のprint文がたかっていない場合、devnullするstdoutをリダイレクトすることができます。 pytest 3.xので

2

一時的に(約capsys.disabled()セクションを参照してください取り込む無効にするeasy wayがある。

専用のレポートセクションに警告を示しpytest-warningsプラグインもあります。

+0

たものを指してくれてありがとう:) gsubからインストールしようとしましたが、 'capsys'に' disabled'属性がないと言います^^ – Mike

+0

'master'ブランチはstableリリース用ですので、 [今後のバージョン3.0](https://github.com/pytest-dev/pytest/blob/features/CHANGELOG.rst)(たくさん!) 'features'ブランチを使う必要があります。 –

+0

ああ、そうです。ありがとうございました。 – Mike

関連する問題