📅  最后修改于: 2020-12-03 05:29:11             🧑  作者: Mango
Python测试框架提供了以下断言方法来检查是否引发了异常。
测试使用任何位置或关键字参数调用函数时是否引发异常(第一个参数)。如果引发了预期的异常,则测试通过;如果引发了另一个异常,则测试通过;如果未引发异常,则测试通过。为了捕获一组异常中的任何一个,可以将包含异常类的元组作为异常传递。
在下面的示例中,定义了一个测试函数以检查是否引发ZeroDivisionError。
import unittest
def div(a,b):
return a/b
class raiseTest(unittest.TestCase):
def testraise(self):
self.assertRaises(ZeroDivisionError, div, 1,0)
if __name__ == '__main__':
unittest.main()
testraise()函数使用assertRaises()函数查看调用div()函数时是否发生零除。上面的代码将引发异常。但是将div()函数的参数更改如下-
self.assertRaises(ZeroDivisionError, div, 1,1)
使用这些更改运行代码时,测试不会失败,因为不会发生ZeroDivisionError。
F
================================================================
FAIL: testraise (__main__.raiseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "raisetest.py", line 7, in testraise
self.assertRaises(ZeroDivisionError, div, 1,1)
AssertionError: ZeroDivisionError not raised
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)
测试regexp是否与引发的异常的字符串表示形式匹配。 regexp可以是正则表达式对象,也可以是包含适合re.search()使用的正则表达式的字符串。
以下示例显示如何使用assertRaisesRegexp()-
import unittest
import re
class raiseTest(unittest.TestCase):
def testraiseRegex(self):
self.assertRaisesRegexp(TypeError, "invalid", reg,"Point","TutorialsPoint")
if __name__ == '__main__':
unittest.main()
在这里,testraseRegex()测试不会作为第一个参数失败。在第二个参数字符串找到“点”。
================================================================
FAIL: testraiseRegex (__main__.raiseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:/Python27/raiseTest.py", line 11, in testraiseRegex
self.assertRaisesRegexp(TypeError, "invalid", reg,"Point","TutorialsPoint")
AssertionError: TypeError not raised
----------------------------------------------------------------------
但是,更改如下所示-
self.assertRaisesRegexp(TypeError, "invalid", reg,123,"TutorialsPoint")
将抛出TypeError异常。因此,将显示以下结果-
================================================================
FAIL: testraiseRegex (__main__.raiseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "raisetest.py", line 11, in testraiseRegex
self.assertRaisesRegexp(TypeError, "invalid", reg,123,"TutorialsPoint")
AssertionError: "invalid" does not match
"first argument must be string or compiled pattern"
----------------------------------------------------------------------