所有的 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()并在我的测试中添加更多的代码。