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第三方库


热门话题
安卓 studio安装的java Unity本机广告   java如何将映射转换为对象   java我试图使用rest控制器从h2数据库中检索记录,但它说没有数据集   反思为什么会抛出java。lang.InstanceException?   在opensuse中找不到Java/javac   java为Android上的谷歌地图添加了5900多个标记。如何有效地做   java如何在if语句中使用循环   java如何在JPA(Hibernate)中映射一对多关系和复合主键?   如何在Java中读取和写入外部进程?   Java线程。睡眠时间最短   java使用EclipseGradle插件如何离线托管和使用依赖项(库jar文件)   java为什么虚拟引用在排队时没有被清除?   java无法理解如何创建用于响铃报警的取消按钮   java解析不应通过注入容器错误发生   java Toast或ProgressDialog不显示   java在自定义对象上使用优先级队列的更好方法   java格式的。wmv文件。(或者任何视频文件都很好)   从页面调用另一个侦听器后,不会调用java JSF<f:ajax>侦听器   java注释ConfigApplicationContext不能多次刷新有什么原因吗?