TestNG学习-依赖
背景:
有时,需要按特定顺序调用测试方法。例如:
在运行更多测试方法之前,请确保一定数量的测试方法已经完成并成功。
在希望将初始化的方法也用作测试方法的同时初始化测试项目。
TestNG允许使用注解或XML指定依赖项。
1. 使用注解指定依赖
可以使用@Test注解中的属性 dependsOnMethods 或dependsOnGroups。
有两种依赖关系:
强依赖。所依赖的所有方法都必须已经运行并成功运行。如果依赖项中至少发生了一次故障,则不会调用它并将其标记为SKIP。
弱依赖。即使其中一些方法失败了,也会始终在所依赖的方法之后运行。如果想确保测试方法以特定顺序运行但它们的成功并不真正取决于其他方法的成功时,这将非常有用。通过在@Test批注中添加“ alwaysRun = true”来获得弱依赖性。
强依赖的示例:
@Testpublic void serverStartedOk() {}@Test(dependsOnMethods = { "serverStartedOk" })public void method1() {}
在这个示例中,method1()被声明为依赖于方法serverStartedOk(),这保证了将始终优先调用serverStartedOk()。
也可以依赖整个组:
@Test(groups = { "init" })public void serverStartedOk() {}@Test(groups = { "init" })public void initEnvironment() {}@Test(dependsOnGroups = { "init.*" })public void method1() {}
在这个示例中,method1()被声明为依赖于与正则表达式“ init.*”匹配的任何组,这保证了将始终在method1()之前调用方法serverStartedOk()和initEnvironment()。
注意:如之前所述,在同一个测试项目运行中,不能保证属于同一组的方法的调用顺序是相同的。
如果依赖的方法失败并且有严格的依赖关系(alwaysRun = false,这是默认设置),则依赖于该方法的方法不会标记为FAIL,而是会标记为SKIP。跳过的方法也将在最终报告中展示(在HTML中既不是红色也不是绿色),因为跳过的方法不一定会失败(标有@ Before / After的方法将不展示在最终报告中)。
DependsOnGroups和dependsOnMethods
DependsOnGroups和dependsOnMethods都接受正则表达式作为参数。对于dependsOnMethods,如果依赖于一个碰巧具有多个重载版本的方法,则将调用所有重载方法。如果只想调用重载方法之一,则应使用dependsOnGroups。
默认情况下,从属方法按类分组。例如,如果方法b()依赖于方法a(),并且有几个包含这些方法的类实例(如果涉及data provider和factory),则调用顺序如下:
a(1)a(2)b(2)b(2)
在所有实例都调用完其a()方法之前,TestNG不会运行b()。
但是在某些情况下,例如在测试登录和退出Web浏览器的情况下,可能不希望出现上述行为。在这种情况下,应该需要如下顺序:
signIn("us")signOut("us")signIn("uk")signOut("uk")
可以使用XML属性group-by-instances实现。 该属性在<suite>或<test>上有效:
<suite name="Factory" group-by-instances="true">or<test name="Factory" group-by-instances="true">
2. 使用XML指定依赖
可以在testng.xml文件中指定组依赖性。使用<dependencies>标记来实现此目的:
<test name="My suite"><groups><dependencies><group name="c" depends-on="a b" /><group name="z" depends-on="c" /></dependencies></groups></test>
<depends-on>属性包含以空格分隔的组列表。
TestNG学习-依赖的更多相关文章
- TestNG学习-001-基础理论知识
此 文主要讲述用 TestNG 的基础理论知识,TestNG 的特定,编写测试过程三步骤,与 JUnit4+ 的差异,以此使亲对 TestNG 测试框架能够有一个简单的认知. 希望能对初学 TestN ...
- TestNG学习-002-annotaton 注解概述及其执行顺序
此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...
- 迟到的 WPF 学习 —— 依赖项属性
本章学习依赖项属性,英文原文 Dependency Property,它是传统 .Net Framework 属性的扩展,是 WPF 的专属,但所幸使用起来和传统属性几乎一样.WPF 元素所提供的大多 ...
- Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)
1.-依赖注入 TestNG支持两种不同类型的依赖项注入:本机(由TestNG本身执行)和外部(由诸如Guice的依赖项注入框架执行). 1.1-本机依赖项注入 TestNG允许您在方法中声明其他参数 ...
- testng学习-before&after,parameters,并行,factory,beanshell,监听器,依赖注入
一系列的before after的操作测试 [TestNG] Running: C:\Users\user\AppData\Local\Temp\testng-eclipse-1538841744\t ...
- testNG 学习笔记 Day 1 使用功能详解
TestSuite处理测试用例有6个规约(否则会被拒绝执行测试) A 测试用例必须是公有类(Public) B 测试用例必须继承与TestCase类 C 测试用例的测试方法必须是公有的( Public ...
- TestNg 7.依赖测试
我本个测试方法执行的时候,依赖于其他的方法.用到关键字dependsOnmethods(依赖于那个方法)也有依赖于哪个组(dependsOnGroups). 看以下的一段代码: package com ...
- Java接口自动化测试之TestNG学习(二)
在maven项目的pom.xml文件中导入TestNG <?xml version="1.0" encoding="UTF-8"?> <pro ...
- TestNG—学习笔记2
关于TestNG,也是一边学一边总结,对于TestNG和Junit的比较其实也没有什么意义,都是一种测试框架,都是为了应用而生的东西,没有必要说谁好谁不好了.用的熟练用的好就是真的好啊. 下面简单的总 ...
随机推荐
- CMU数据库(15-445)-实验2-B+树索引实现(中)删除
3. Delete 实现 附上实验2的第一部分 https://www.cnblogs.com/JayL-zxl/p/14324297.html 3. 1 删除算法原理 如果叶子结点中没有相应的key ...
- Linux更换软件源
1. Ubuntu16.04 sudo cp /etc/apt/sources.list /etc/apt/sources_origin.list # 备份 sudo gedit /etc/apt/s ...
- python系统监控及邮件发送
python系统监控及邮件发送 #psutil模块是一个跨平台库,能轻松实现获取系统运行的进程和系统利用率 import psutil ...
- MySQL调优性能监控之performance schema
一.performance_schema的介绍 performance:性能 schema:图(表)示,以大纲或模型的形式表示计划或理论. MySQL的performance schema 用于监控M ...
- leaving sockets open which can trigger a ResourceWarning in some # cases, and look like a memory leak in others
# -*- coding: utf-8 -*- """ requests.api ~~~~~~~~~~~~ This module implements the Requ ...
- 【rz】【sz】参数详解
参数 SYNOPSIS sz [-+8abdefkLlNnopqTtuvyY] file ... b:以二进制方式,默认为文本方式 e:对所有控制字符转义 待续 常见问题: 1.xshell 使用rz ...
- python3中zip对象的使用
zip(*iterables) zip可以将多个可迭代对象组合成一个迭代器对象,通过迭代取值,可以得到n个长度为m的元组.其中n为长度最短可迭代对象的元素个数,m为可迭代对象的个数.并且每个元组的第i ...
- Java实现windows,linux服务器word,excel转为PDF;aspose-words,Documents4j
Java实现windows,linux服务器word,excel转为PDF:aspose-words,Documents4j 一.通过aspose-words将word,Excel文档转为PDF 1. ...
- Java关键字及作用解释
访问控制 1) private 私有的 private 关键字是访问控制修饰符,可以应用于类.方法或字段(在类中声明的变量). 只能在声明 private(内部)类.方法或字段的类中引用这些类.方法或 ...
- hadoop的hdfs中的namenode和datanode知识总结
一,NameNode: 1, Namenode是中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名称空间(namespace)以及客户端对文件的访问. 2, 文件操作,Namenod ...