- 单元测试框架教程
- 单元测试框架 - 首页
- 单元测试框架 - 概述
- 单元测试框架 - 框架
- 单元测试框架 - API
- 单元测试框架 - 断言
- 单元测试框架 - 测试发现
- 单元测试框架 - 跳过测试
- 单元测试框架 - 异常测试
- 单元测试框架 - 时间测试
- 单元测试框架 - Unittest2
- 单元测试框架 - 信号处理
- 单元测试框架 - Doctest
- 单元测试框架 - Doctest API
- 单元测试框架 - Py.test 模块
- Nose 测试框架
- Nose 测试工具
- 单元测试框架资源
- 单元测试框架 - 快速指南
- 单元测试框架 - 资源
- 单元测试框架 - 讨论
Nose 测试框架
nose 项目发布在 2005 年,也就是 **py.test** 获得现代面貌的次年。它由 Jason Pellerin 编写,用于支持 py.test 开创的相同测试习惯用法,但它在一个更容易安装和维护的包中。
可以使用 pip 工具安装 **nose** 模块。
pip install nose
这将安装 nose 模块到当前的 Python 发行版中,以及一个 nosetest.exe,这意味着可以使用此工具以及 –m 开关运行测试。
C:\python>nosetests –v test_sample.py Or C:\python>python –m nose test_sample.py
**nose** 当然会收集来自 **unittest.TestCase** 子类的测试。我们也可以编写简单的测试函数,以及不是 unittest.TestCase 子类的测试类。nose 还提供许多有用的函数,用于编写计时测试、测试异常和其他常见用例。
**nose** 自动收集测试。无需手动将测试用例收集到测试套件中。运行测试具有响应性,因为 **nose** 一加载第一个测试模块就开始运行测试。
与 unittest 模块一样,**nose** 在包、模块、类和测试用例级别支持 fixture,因此可以尽可能减少昂贵的初始化操作。
基本用法
让我们考虑一个类似于前面使用的脚本 nosetest.py:
# content of nosetest.py def func(x): return x + 1 def test_answer(): assert func(3) == 5
要运行上述测试,请使用以下命令行语法:
C:\python>nosetests –v nosetest.py
控制台显示的输出如下:
nosetest.test_answer ... FAIL ================================================================ FAIL: nosetest.test_answer ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest self.test(*self.arg) File "C:\Python34\nosetest.py", line 6, in test_answer assert func(3) == 5 AssertionError ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (failures = 1)
可以通过在上述命令行中使用 **with-doctest** 选项将 **nose** 与 DocTest 集成。
\nosetests --with-doctest -v nosetest.py
你可以在测试脚本中使用 **nose**:
import nose nose.main()
如果你不希望测试脚本在成功时退出 0,失败时退出 1(像 unittest.main),请使用 nose.run():
import nose result = nose.run()
如果测试运行成功,结果将为真;如果测试失败或引发未捕获的异常,结果将为假。
**nose** 支持在包、模块、类和测试级别使用 fixture(设置和拆卸方法)。与 py.test 或 unittest fixture 一样,setup 始终在任何测试(或测试包和模块的测试集合)之前运行;如果 setup 成功完成,则无论测试运行的状态如何,teardown 都会运行。