2011-06-23 44 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方法之前确实会调用login方法,因为所有参数都在传递给函数/方法之前进行评估。

+0

我删除了(),但在引发异常后测试未通过。相反,函数controller.login正在处理异常。 – Takkun

+0

@Takkun:如果您希望'assertRaises'查看异常,则controller.login方法不得捕获(或必须重新加载)异常。 – unutbu

相关问题