2016-09-12 4 views
0

pytestでスクリプトの関数を個別にテストした後、コマンドライン引数を指定して実行することでいくつかのユースケースをテストしたいと考えています。次に、出力を期待される出力と比較したいと思います。 pytestでこれを行うことはできますか?pytestを実行してスクリプト全体の出力をアサートする

スクリプト全体にコマンドライン入力でこれを行うことができない場合、私はargparseをモックする必要があります。最善のアプローチは何ですか?ありがとう!

Python 2.7.12, pytest-3.0.2, py-1.4.31, pluggy-0.3.1 

答えて

1

それはあなただけで正しく構成する必要があり、非常に簡単です:

def main(): 
    # argument parsing stuff here 
    ... 

if __name__ == '__main__': 
    main() 

を今すぐあなたのテストで直接main()関数を呼び出します。別のpythonプロセスを実行するには、でなく、が必要です。引数の解析をシミュレートするには、sys.argvにパッチを適用するだけです。あなたのスクリプトが設定ファイルや環境変数に依存している場合は、それらも模擬/パッチする必要があります。

+0

あなたが提案したように、 'monkeypatch.setattr(sys、 'argv'、my_arg_list)'は、私のmain-functionと呼ばれていました。ありがとう! – curiousaboutpi

関連する問題