- 单元测试框架教程
- 单元测试框架 - 首页
- 单元测试框架 - 概述
- 单元测试框架 - 框架
- 单元测试框架 - API
- 单元测试框架 - 断言
- 单元测试框架 - 测试发现
- 单元测试框架 - 跳过测试
- 单元测试框架 - 异常测试
- 单元测试框架 - 时间测试
- 单元测试框架 - Unittest2
- 单元测试框架 - 信号处理
- 单元测试框架 - Doctest
- 单元测试框架 - Doctest API
- 单元测试框架 - Py.test 模块
- Nose 测试 - 框架
- Nose 测试 - 工具
- 单元测试框架资源
- 单元测试框架 - 快速指南
- 单元测试框架 - 资源
- 单元测试框架 - 讨论
单元测试框架 - 异常测试
Python 测试框架提供以下断言方法来检查是否引发了异常。
assertRaises(exception, callable, *args, **kwds)
测试当函数使用任何位置或关键字参数调用时是否引发异常(第一个参数)。如果引发了预期的异常,则测试通过;如果引发了其他异常,则为错误;如果未引发任何异常,则测试失败。要捕获任何一组异常,可以将包含异常类的元组作为 exception 传递。
在下面的示例中,定义了一个测试函数来检查是否引发了 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)
assertRaisesRegexp(exception, regexp, callable, *args, **kwds)
测试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() 测试不会失败,因为第一个参数。"Point" 在第二个参数字符串中找到。
================================================================
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"
----------------------------------------------------------------------
广告