2017-07-13 13 views
0

私は現在Python2スクリプトの単体テストを書いています。私は例外を検証するためにsys.exitとprint文の両方をキャッチするテストケースを書くのに問題があります。どんな助けもありがとう。模擬テスト/ print except with print statements

except ParseError, e: 
     if len(self.args.password) == 0: 
      print('Some Message') 

     print 'Login response error' 
     sys.exit(1) 
+0

この印刷物はどれですか?あなたはexit()コールをどのように捕まえようとしていますか? –

+0

どちらかのprintステートメントをキャッチしたい。どちらが本当に問題ではありません。 現在、nose.toolsパッケージに含まれている@raises(SystemExit)デコレータを使用しています – user2769952

答えて

0

sys呼び出しをモックしてアサーションを行うことができます。あなたがsys.stdoutコールを模擬することができprint文の場合

@patch('sys.exit') 
def test_whatever(exit_mock): 
    // force the exception 
    assert exit_mock.call_count == 1 

たとえば、あなたのテストでsys.exit方法にパッチを適用してから、次のようにそれが呼び出されたことを主張することができます。非常に簡潔な例はPython cookbookの本にありますので、ここに貼り付けてコピーしません。