我在我的单元测试中使用 assertRaises 来测试特定异常的引发。
assertRaises(IOError, testToRun, passedValues)
尽管我需要捕获的一些异常具有特定的错误号 (errno),但我想捕获与该异常相关的特定错误号,而不是收集基本异常。像这样的东西,虽然它显然不起作用:)
assertRaises(IOError.errno(2), testToRun, passedValue)
当我想捕获我一直在使用的特定编号的异常时,为了解决这个问题:-
try:
testToRun(passedValues)
except IOError, e:
if e.errno == 2:
pass
else:
raise
我确信它并不完美,但它有效,但想知道是否可以使用 assertRaises 来做同样的事情,这是一种更紧凑的方式。
谢谢。
最佳答案
从 2.7 开始,可以将 assertRaises
与上下文管理器一起使用:
with self.assertRaises(SomeException) as cm:
do_something()
the_exception = cm.exception
self.assertEqual(the_exception.error_code, 3)