Nose 测试 - 框架

nose 项目于 2005 年发布,即 py.test 获得现代外观的第二年。它由 Jason Pellerin 编写,支持 py.test 开创的相同测试习惯用法,但包含在一个更易于安装和维护的包中。

可以借助 pip 实用程序安装 nose 模块

pip install nose

这将在当前 Python 发行版中安装 nose 模块以及 nosetest.exe,这意味着可以使用此实用程序以及使用 –m 开关运行测试。

C:\python>nosetests –v test_sample.py
或
C:\python>python –m nose test_sample.py

nose 当然从 unittest.TestCase 子类收集测试。我们还可以编写简单的测试函数,以及不是 unittest.TestCase 子类的测试类。 nose 还提供了许多有用的函数,用于编写定时测试、测试异常和其他常见用例。

nose 自动收集测试。无需手动将测试用例收集到测试套件中。运行测试是响应式的,因为 nose 在第一个测试模块加载后立即开始运行测试。

与 unittest 模块一样,nose 在包、模块、类和测试用例级别支持设备,因此可以尽可能少地进行昂贵的初始化。

基本用法

让我们考虑与之前使用的脚本类似的 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
ose\case.py", line 198, in runTest
      self.test(*self.arg)
   File "C:\Python34
osetest.py", line 6, in test_answer
      assert func(3) == 5
AssertionError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)

nose 可以通过在上述命令行中使用 with-doctest 选项与 DocTest 集成。


osetests --with-doctest -v nosetest.py

您可以在测试脚本中使用 nose

import nose
nose.main()

如果您不希望测试脚本在成功时以 0 退出,在失败时以 1 退出(如 unittest.main),请使用 nose.run() 代替 −

import nose
result = nose.run()

如果测试运行成功,结果将为 true,如果失败或引发未捕获的异常,结果将为 false。

nose支持包、模块、类和测试级别的装置(安装和拆卸方法)。与 py.test 或 unittest 装置一样,安装始终在任何测试(或测试包和模块的测试集合)之前运行;如果安装成功完成,则拆卸将运行,无论测试运行的状态如何。