2011-06-23 25 views
1
def test_invalid_host(self): 
    controller = SSHController("host name") 
    self.assertRaises(SSHException, controller.login()) 
#test_invalid_host End 

テストが合格する前にcontroller.login()が終了するか、SSHExceptionが発生したらすぐにテストに合格しますか?ユニットテストが終了する前にassertRaisesの関数が完了しますか?

+2

私はそれを呼び出さずにcontroller.loginを渡す必要があると思います(つまり、 '()'を削除してください)。エラーが発生すると停止します。 –

+0

'assertRaises'は、' controller.login'を呼び出すと 'SSHException'が発生することをアサートします。関数が内部的に呼び出してもそれを捕捉しても、関数が呼び出されなければ、 'assertRaises'は失敗します。 – katrielalex

答えて

3

SSHExceptionが発生すると、例外はassertRaisesメソッドによってキャッチされます。したがって残りのcontroller.loginは実行されません。

PS。 controller.login後括弧なし

self.assertRaises(SSHException, controller.login) 

を呼び出すようにしてください。 controller.login()と書くと、メソッドは、すべての引数が関数/メソッドに渡される前に評価されるので、assertRaisesメソッドが呼び出される前に呼び出されます。

+0

()を削除しましたが、例外が発生した後にテストがパスしていません。代わりに、controller.login関数が例外を処理しています。 – Takkun

+0

@ Takkun:例外を見るために 'assertRaises'を望むなら、controller.loginメソッドは例外をキャッチしてはいけません。 – unutbu

関連する問題