Nose Testing - 框架

nose项目于2005年发布,即 py.test 获得其现代风格后的一年.它是由Jason Pellerin编写的,用于支持py.test开创的相同测试习惯,但是在一个易于安装和维护的软件包中.

nose模块可以在pip实用程序的帮助下安装

pip install nose


这将在当前Python发行版中安装nose模块以及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 支持包,模块,类和测试用例级别的夹具,因此可以尽可能不频繁地进行昂贵的初始化.

基本用法

让我们考虑使用类似于之前使用的脚本的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 nosenose.main()

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

import noseresult = nose.run()

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

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