nose1.3.7文档翻译--6.Batteries included: builtin nose plugins

nose包含了许多内建的插件,用于让测试更快更简单。
注意:nose0.11.2在plugin加载时有一个改变。现在,如果内建插件与三方插件同名,三方插件将会被加载。

AllModules:收集所有模块中的测试例

使用AllModules插件可以收集并执行所有的python 模块。使用方法是通过传递–all-modules参数或者设置NOSE_ALL_MODULES环境变量。正常情况下,nose仅仅收集匹配testMatch正则的模块。
更多信息可查看Finding tests in all modules

Attrib: 给用例添加属性,然后根据这些属性搜集用例

该插件是一个属性选择器插件。
有时,在测试中,你想要以一种标准来搜集用例,而不是仅仅通过文件名。例如,你可能想要运行除了慢的用例之外的所有用例。你可以使用Attribute插件,在你的测试方法中设置一些属性。
详情可查看Attrib: tag and select tests with attributes

Capture:捕捉测试中的输出信息

这个插件能够在测试执行过程中,捕捉输出信息。如果测试失败,或者抛出一个错误,被捕捉到的输出将会被添加到错误或者失败输出中。该插件默认是enable的,你可以通过-s 或–nocapture参数将其设为disable。
详情可查看Capture: capture stdout during tests
ps:这个东西非常好,以前用python unittest时,有一同事每一步都有一个print,然后根据print就能知道出错时执行到哪一步了,但是这个会大大增加log量。通过这个插件,你就可以每一步都print,然后仅仅失败或者出错的用例才会显示print内容。超级棒。。。。。。

Collect:快速搜集测试例

这个插件忽略测试例的执行过程,仅仅收集测试例名称。Fixtures也会被忽略,因此使能Collection插件运行nosetests将会非常迅速。
这个插件与testid插件(–with-id)联合使用将会时有用的。两个插件一起使用可以得到一个带有索引的所有用例的列表,你可以通过索引运行单个的用例。
这个插件对于统计一个suite中的测试例个数也是有用的,可以让人们通过观察demo,好好思考测试通过。
详情可查看Collect: Collect tests quickly

Cover:代码覆盖率

注意:新版本的coverage插件包含它们自己的nose插件,它比内建插件更高级。它暴露出更多的coverage参数,使用coverage原生html输出。 取决于已安装coverage的版本,被引用的插件可能会覆盖nose内建插件,也有可能以不同的名字获得。使用nosetests –help或者nosetests -plugins检查你的系统中可使用的coverage插件。
如果你已经安装了Ned Batchelder’s coverage 模块,你可以激活覆盖率报告通过–with-coverage或者NOSE_WITH_COVERAGE环境变量。覆盖率报告将会覆盖任何测试用例开始之后被导入的python代码模块,除去匹配testMatch正则的模块之外。如果你想要也包括这些模块,使用–cover-tests,或者设置NOSE_COVER_TESTS环境变量值为true。想要约束覆盖率报告为一个或者多个包中的所有模块,使用–cover-package,或者设置NOSE_COVER_PACKAGE环境变量。
详情可查看Cover: code coverage

Debug:当出现错误或者失败时,进入pdb调试

这个插件提供–pdb和–pdb-failures参数。–pdb参数使当测试运行器遇到错误时进入pdb调试。想要在失败时进入pdb调试,使用–pdb-failures。
注:官方是这样说但是底下options又这样介绍
Options

–pdb
Drop into debugger on failures or errors

–pdb-failures
Drop into debugger on failures

–pdb-errors
Drop into debugger on errors

详情可查看Debug: drop into pdb on errors or failures

Deprecated:标记测试例是过时的

这个插件安装一个DEPRECATED错误类为了一个DeprecatedTest异常。当DeprecatedTest被抛出时,异常将会被输出到结果的deprecate熟悉中。D后者DEPRECATED(verbose)将是输出,异常将不会被统计为错误或失败。它默认是使能的,但是可以通过–no-deprecates关掉。
详情可查看Deprecated: mark tests as deprecated

Doctests通过nose运行doctest

通过–with-doctest或者NOSE_WITH_DOCTEST环境变量,使用Doctest插件收集并执行doctests。由于doctests通常被包含在被测试的包中(而不是被打包到它们自己的包或模块中),nose仅仅搜索工作区中内测试包中的doctest。
Doctests可能被放置到非python模块的文件中。在这种情况下,它们将会被收集并执行通过使用–doctest-extension参数后者NOSE_DOCTEST_EXTENSION环境变量。
当加载非模块文件中的doctests时,使用–doctest-fixture参数明确如何查找包含fixtures的测试例。一个模块名将会被生成,通过添加对应的参数值到被加载的doctest文件名后。例如,一个doctest文件“widgets.rst”,参数值为–doctest_fixtures=_fixt,将会从widgets_fixt.py模块中加载fixtures。
一个fixtures模块可能会定义一下函数:

  • setup([module])或者setup_module([module])
    在所有测试例运行之前被调用。你也有可能会抛出SkipTest来跳过所有测试例。
  • teardown([module])或者teardown_module([module])
    如果setup/setup_module没有抛出未被处理的异常,将会在所有用例之后被调用。
  • setup_test(test)
    在test之前被调用。注意:被传递的参数是doctest.DocTest实例,而不是unittest.TestCase。
  • teardown_test(test)
    如果setup_test没有抛出异常,将会在test之后被调用。注意:被传递的参数是doctest.DocTest实例,而不是unittest.TestCase。

Doctesrs将会像其他的用例一样运行,当时异常中的输出捕捉并不会有效;doctest在运行时有自己的输出捕捉。

Failure Detail: 断言自省

这个插件提供断言自省的功能。当该插件被使能时,测试失败后,异常被抛出的上下文跟踪信息也会被显示。简单的替换也会表现在上下文输出中,用于提供调试信息。
详情可查看:Failure Detail: introspect asserts

Isolate: 防止用例带来负面影响

这个插件在运行完module和package后,重置sys.modules内容。通过设置–with-isolation或者NOSE_WITH_ISOLATION环境变量可以使用它。
效果与装饰接下来的函数类似,该函数会在一个测试模块被导入或者执行时被调用。

def setup(module):
    module._mods = sys.modules.copy()

def teardown(module):
    to_del = [ m for m in sys.modules.keys() if m not in
               module._mods ]
    for mod in to_del:
        del sys.modules[mod]
    sys.modules.update(module._mods)

Isolation仅仅在懒加载时工作。在正常使用中,这个过程仅仅出现在目录中的模块被发现,发现是指import的进程,从每个模块中加载并运行用例,加载好人执行被封装在一个loadTestsFromName调用中。这个插件实现了loadTestsFromNames来迫使相同的懒加载,它允许isolation工作在被制定的模式和发现中,这也会牺牲一点效率的代价:懒加载names迫使所有的上下文setup和teardown来为每一个name,阻止正常被用于确保上下文setup和teardown尽可能少的执行的为每一个name的分组的做法。

内容较多,持续更新中。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值