testng 控制case运行顺序
Testing.xml 文档结构:
<test name="xxxx" preserve-order="false">
<!-- 参数定义的方法 -->
<parameter name="first-name" value="Cedric"/>
<!-- groups的用法,前提是需要存在classes的组,否则所有方法不被运行 -->
<groups>
<!-- 定义组中组的方法 -->
<define name="groups_name">
<include name="group1"/>
<include name="group2"/>
</define>
<run>
<!-- 此处用组名来区别 -->
<inclue name="groups_name" />
<exclue name="groups_name" />
</run>
</groups>
<!-- classes的用法,classes中包含类名,类名底下可以包含方法名或排除方法名 -->
<classes>
<class name="class1">
<methods>
<!-- 此处用方法名来区别 -->
<inclue name="method_name" />
<exclue name="method_name" />
</methods>
</class>
</classes>
</test>
1.例如以下代码
package yycuser13.test.testcase;
import org.testng.annotations.*;
public class Test1{
@Test(groups={"login"})
public void login(){
System.out.println("my name id login");
}
@Test(groups={"login"})
public void login1(){
System.out.println("my name id login1");
}
@Test(groups={"logout"})
public void logout(){
System.out.println("my name id logout");
}
@Test(groups={"logout"})
public void logout1(){
System.out.println("my name id logout1");
}
}
可以将测试用例分组,执行测试时,使用组来管理
Testng.xml 使用下列写法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
<test name="testloginandlogout ">
<groups>
<run>
<include name="logout"/>
<exclue name="login"/>
</run>
</groups>
<classes>
<class name="yycuser13.test.testcase.Test1">
</class>
</classes>
</test>
<!-- Test -->
</suite> <!-- Suite -->
以上的xml中设置了 只运行logout组
2.例如下代码、
package yycuser13.test.testcase;
import org.testng.annotations.Test;
public class Test1{
@Test
public void login(){
System.out.println("my name id login");
}
@Test
public void login1(){
System.out.println("my name id login1");
}
@Test
public void logout(){
System.out.println("my name id logout");
}
@Test
public void logout1(){
System.out.println("my name id logout1");
}
}
Testing.xml 文件配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none" >
<test name="Test">
<classes>
<class name="yycuser13.test.testcase.Test1" preserve-order="true">
<methods>
<include name="login"/>
<exclude name="login1"/>
<exclude name="logout"/>
<include name="logout1"/>
</methods>
</class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
当preserve-order="true"是,可以保证节点下面的方法是按顺序执行的
运行结果为:
my name id login
my name id logout1
===============================================
Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
3.例如下代码
package yycuser13.test.testcase;
import org.testng.annotations.Test;
import org.testng.annotations.Test;
public class Test1{
@Test(priority=3)
public void login(){
System.out.println("my name id login");
}
@Test(priority=2)
public void login1(){
System.out.println("my name id login1");
}
@Test(priority=1)
public void logout(){
System.out.println("my name id logout");
}
@Test(priority=4)
public void logout1(){
System.out.println("my name id logout1");
}
}
运行结果为:
my name id logout
my name id login1
my name id login
my name id logout1
===============================================
Suite
Total tests run: 4, Failures: 0, Skips: 0
4.例如下代码 加入了 dependsOnGroups
package yycuser13.test.testcase;
import org.testng.annotations.Test;
public class Test1{
@Test(groups={"login"},dependsOnGroups={"logout"})
public void login(){
System.out.println("my name id login");
}
@Test(groups={"login"},dependsOnGroups={"logout"})
public void login1(){
System.out.println("my name id login1");
}
@Test(groups={"logout"})
public void logout(){
System.out.println("my name id logout");
}
@Test(groups={"logout"})
public void logout1(){
System.out.println("my name id logout1");
}
}
运行结果为:
my name id logout
my name id logout1
my name id login
my name id login1
PASSED: logout
PASSED: logout1
PASSED: login
PASSED: login1
===============================================
Default test
Tests run: 4, Failures: 0, Skips: 0
5.例如下代码 使用dependsOnMethods
package yycuser13.test.testcase;
import org.testng.annotations.Test;
public class Test1{
@Test(dependsOnMethods={"login1"})
public void login(){
System.out.println("my name id login");
}
@Test(dependsOnMethods={"logout"})
public void login1(){
System.out.println("my name id login1");
}
@Test
public void logout(){
System.out.println("my name id logout");
}
@Test(dependsOnMethods={"login"})
public void logout1(){
System.out.println("my name id logout1");
}
}
运行结果为:
my name id logout
my name id login1
my name id login
my name id logout1
PASSED: logout
PASSED: login1
PASSED: login
PASSED: logout1
===============================================
Default test
Tests run: 4, Failures: 0, Skips: 0
===============================================
testng 控制case运行顺序的更多相关文章
- testng入门教程3用TestNG执行case的顺序
本教程介绍了TestNG中执行程序的方法,这意味着该方法被称为第一和一个接着.下面是执行程序的TestNG测试API的方法的例子. 创建一个Java类文件名TestngAnnotation.java在 ...
- testng标签运行顺序
testng的annotations运行顺序为: @BeforeSuite @BeforeTest @BeforeClass @BeforeMethod @AfterMethod @AfterClas ...
- Java类的基本运行顺序
不看不知道,一看还真吓了一跳!Java类的基本运行顺序你真的知道吗?如果你有疑惑,那就看下面这篇文章吧. 原文出自:[url]http://column.ibeifeng.com/chenchen ...
- unity脚本运行顺序具体的解释
unity脚本自带函数执行顺序例如以下:将以下脚本挂在随意物体执行就可以得到 Awake ->OnEable-> Start ->-> FixedUpdate-> Upd ...
- Jmeter结构体系及运行顺序
一:jmeter运行原理: jmeter时以线程的方式来运行的(由于jmeter是java开发的所以是运行在JVM虚拟机上的,java也是支持多线程的) 二:jmeter结构体系 1.取样器smapl ...
- Jmeter 结构体系及运行顺序
一.Jmeter 运行原理: Jmeter 时以线程的方式来运行的(由于Jmeter 是 java 开发的所以是运行在 JVM 虚拟机上的,java 也是支持多线程的) 二.Jmeter 结构体系 1 ...
- Spring AOP之多切面运行顺序
多切面运行顺序 当一个方法的执行被多个切面共同切的时候,环绕通知只影响当前切面的通知顺序,例如创建两个切面logUtil,validateUtil两个切面共同监视计算器类的加法运算,add(int a ...
- Java类的基本运行顺序是怎样
我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo{ private String name; private int age; public Demo(){ ...
- lishell学习之路:流程控制(case)
流程控制case语句: 介绍:多分支case条件语句 1.case语句和if..elif..else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而i ...
随机推荐
- Android - 动态调整ListView高度
布局中,如果设计ListView的高度为包裹内容,那么ListView的高度是随着它的子条目的数量的变化而改变的, 这就可能会导致ListView下面的一些控件的位置也会随着ListView的高度的变 ...
- dom自定义属性 兼容 index值获取
function getIndex(Eve,obj){ for(var i = 0;i<obj.length;i++){ obj[i].setAttribute("index" ...
- 利用Jmeter进行Web测试
JMeter介绍 脚本录制 运行JMeter进行测试 JMeter主要组件介绍 参数化设置 动态数据关联 使用命令行运行JMeter脚本 利用XSLT分析JMeter结果文件 1:JMeter,一个1 ...
- C# winform程序如何打包64位安装程序
故事背景: 原来在客户电脑上工作的很正常的程序,在客户将其操作系统从32位换为64位之后,出现了不能正常使用的问题. --------------------------- 解决办法: 1:将解决方案 ...
- 安装生物信息学软件-MetaPhlAn2
上周20161021-20161028的任务还没有搞完,所以今天来填坑(微笑脸) ××××××××××××××××××××我是萌萌哒分割线××××××××××××××××××××××××××××××× ...
- iOS应用数据存储2-SQLite3数据库
SQLite3 SQLite3是一款开源的嵌入式关系型数据库,可移植性好,易使用,内存开销小. SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中. SQLite ...
- JSP应用程序(自定义错误页面)
一.编写 1.index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> &l ...
- sql基本增删改查语法
sql语法学习(适合新手) 1.插入数据 语法格式: INSERT [INTO] <表名> [列名] VALUES <值列表> insert into students(sna ...
- C++学习笔记24:makefile文件
makefile make命令:负责c/c++程序编译与链接 make根据指定命令进行建构 建构规则文件:GNUmakefile , makefile,Makefile makefile 文件格式 m ...
- 《JavaScript模式》第3章 字面量和构造函数
@by Ruth92(转载请注明出处) 第3章:字面量和构造函数 一.创建对象的三种方式 // 对象字面量 var car = {goes: "far"}; // 内置构造函数(反 ...