nodep测试依赖工具,移植到nose2

nose2dep的Python项目详细描述


用于测试依赖项的nose2插件

这是基于https://github.com/zitrax/nose-dep/,移植到nose2并稍加调整。

此插件允许您表示测试之间的依赖关系,或测试的首选运行顺序。尽管这违反了最佳实践(单元测试应该是独立的,并且可以独立运行的——ruby的minitest正是出于这个原因随机化了测试顺序),但它在某些情况下可能是有用的:

  • 您可能会有非常慢的集成测试,在这种情况下,重做测试A所做的只是为了运行测试B,成本太高
  • 您可能有“冒烟测试”,该测试应首先运行,以便在这些测试失败时可以跳过其余的测试—例如,如果您正在编写乘法库,而2*2不工作,则没有测试任何更复杂的内容的点

要使用它,请导入dependents decorator(from nose2dep.core import depends)并用@depends(before="test_name")@depends(after=["test_name","test_name2"])@depends(priority=6)(或这些参数的某些组合,例如@depends(before="test_name",after="test_other", priority=100))装饰测试用例。

依赖关系

若要声明测试需要在其他特定测试之前或之后运行,请将before=after=参数传递给@depends。参数可以是:

  • 另一个测试方法的名称作为字符串
  • 另一个测试方法对象本身
  • 以上任一项的列表

如果测试B依赖于测试A,并且测试A失败,那么B将被跳过(允许上面的“冒烟测试”用例)。

请注意,与原始nodep不同,所有依赖项都被视为软的。它们只会影响测试顺序,而不会强制包含。例如,如果我们有:

@depends(after=test_b)
def test_a:
  pass

def test_b:
  pass

并按b,a的顺序运行所有测试。但是,如果您只运行test_a,它将不会拉入test_a以满足依赖性-它将只运行test_a。

优先级

每个测试可以被赋予整数优先级(默认为50),并且测试将按从低到高的顺序运行。依赖项优先,因此总的顺序为:

  1. 优先级低于或等于默认值的所有测试,这些测试不属于按优先级先排序后按名称排序的任何依赖关系链的一部分。
  2. 按顺序排列优先级组,而每个优先级组的内部顺序与点1相同。
  3. 优先级高于默认值的所有测试,这些测试不属于按优先级先排序后按名称排序的任何依赖关系链。

注意:目前不支持python 2.6和3.2。适用于2.7和3.3+。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Salesforce中查询自定义对象?   RichFaces 4中的java ExtendedDataTable:数据模型处理   java Android类层次结构和带有片段的接口   java如何在文件中保存JLabel的颜色/大小?   java编辑类中的返回值而不修改类本身?   安卓如何替换字符串java中的ï»   1.3.7.发布>1.4.1。发布| java。lang.NoSuchMethodError:org。springframework。靴子建设者SpringApplicationBuilder。展示横幅   java列表保存在模型中,而不在setter中进行设置   java如何打开一个窗口。windows中的ks文件?   Java HashMap获取值(其中大部分值)   vps的javascript Websocketurl?   使用byte buddy或某些库进行java评测   java Dom4j获取单节点文本值