我想测试是否引发并捕获了正确的异常unittest
.
下面是我的示例代码:
def foo():
try:
raise Exception(ValueError)
except ValueError:
print "raised"
这是我想做的:
self.assertRaises(ValueError, foo)
由于我捕获了异常,所以我无法assertRaise
例外。
我错过了什么还是有其他方法?
我的完整代码:
#!/usr/bin/python
import unittest
def foo():
try:
raise ValueError
except ValueError, e:
print "caught"
class tester(unittest.TestCase):
def test1(self):
with self.assertRaises(ValueError):
foo()
def test2(self):
self.assertRaises(ValueError, foo)
if __name__ == '__main__':
unittest.main()
不,您不能从函数外部测试仅在函数内部产生影响的事物。
您可以做的是将引发异常的代码拆分为自己的函数,然后对其进行测试以检查是否引发了异常(使用assertRaises
)。原始函数可以调用该函数,如果您对该工作进行正常测试,那么显然它会捕获异常。
但是,这是否是一个好主意取决于您的函数的作用。为什么有关系吗该函数在某个时刻引发异常然后捕获它?也许有一天你会改用其他方式来做同样的事情,并得到同样的结果。那么你的测试不应该继续工作吗?
如果异常只是一个实现细节,那么您可能根本不应该测试它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)