【发布时间】:2010-05-20 14:37:59
【问题描述】:
我正在使用 Python Unittest 运行测试。我正在运行测试,但我想做负面测试,我想测试一个函数是否抛出异常,它通过但如果没有抛出异常,则测试失败。我的脚本是:
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
self.assertFalse
except suds.WebFault, e:
self.assertTrue
else:
self.assertTrue
即使函数完美运行,它也总是传递为 True。我还尝试了各种其他方式,包括:
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
self.assertFalse
except suds.WebFault, e:
self.assertTrue
except Exception, e:
self.assertTrue
有人有什么建议吗?
谢谢
我尝试过 assertRaises,但没有成功。
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
self.assertRaises(WebFault)
except suds.WebFault, e:
self.assertFalse
except Exception, e:
self.assertTrue
它仍然通过。由于某种原因,它不会尝试执行assertRaises 语句。我也试过:(函数应该失败但测试应该通过)
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
except suds.WebFault, e:
self.assertFalse
except Exception, e:
self.assertTrue
else:
self.assertFalse
由于某种原因,即使函数通过它也不会引发错误。无论发生什么异常,它总是如此。除非有 else 语句,否则它就是这样。
找到了一种可行的方法,但它似乎是一种非常糟糕的做事方式:
任何人都可以提出一种更清洁的方法吗?
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
except suds.WebFault, e:
self.assertFalse
except Exception, e:
pass
try:
result==result
except:
result=None
if result==None:
assert True
else:
assert False
【问题讨论】:
-
assertRaises 的 python 文档很好,并且有一个如何使用它的示例。 PS:angryflower.com/bobsqu.gif
标签: python testing exception unit-testing