所有的 assert 方法(除了
assertRaises()
,assertRaisesRegexp()
)都接受一个msg
参数,如果指定,则用作失败时的错误消息
…但是如果我想为assertRaises()
or指定错误消息assertRaisesRegexp()
怎么办?
用例:在循环中测试各种值时,如果一个失败,我想知道哪一个:
NON_INTEGERS = [0.21, 1.5, 23.462, math.pi]
class FactorizerTestCase(unittest.TestCase):
def test_exception_raised_for_non_integers(self):
for value in NON_INTEGERS:
with self.assertRaises(ValueError):
factorize(value)
如果其中任何一个失败,我会得到:
AssertionError: ValueError not raised
这对我找出哪个失败了没有太大帮助……如果我能提供一个像我一样的msg=
论点就好了assertEqual()
!
(我当然可以将它们分解为单独的测试函数——但也许有很多我想测试的值,或者它需要一些缓慢/昂贵的设置,或者它是更长的功能测试的一部分)
如果我可以很容易地让它报告类似的内容,我会喜欢它:
AssertionError: ValueError not raised for input 23.462
——但这也不是一个足够重要的事情来保证重新实现/扩展assertRaises()
并在我的测试中添加更多的代码。