Java--TestNG
TestNG类的配置信息:
@BeforeSuite:在此套件中的所有测试运行之前,将运行带注释的方法。
@AfterSuite:在此套件中的所有测试运行后,将运行带注释的方法。
@BeforeTest:在运行属于<test>标记内的类的任何测试方法之前,将运行带注释的方法。
@AfterTest:在运行了属于<test>标记内的类的所有测试方法之后,将运行带注释的方法。
@BeforeGroups:此配置方法之前将运行的组列表。保证在调用属于任何这些组的第一个测试方法之前不久运行此方法。
@AfterGroups:此配置方法将在之后运行的组列表。保证在调用属于任何这些组的最后一个测试方法后不久运行此方法。
@BeforeClass:在调用当前类中的第一个测试方法之前,将运行带注释的方法。
@AfterClass:在运行当前类中的所有测试方法之后,将运行带注释的方法。
@BeforeMethod:带注释的方法将在每个测试方法之前运行。
@AfterMethod:带注释的方法将在每个测试方法之后运行。
TestNG类的超类中的注释行为:
在这种情况下,TestNG保证“@Before”方法以继承顺序执行(首先是最高超类,然后是继承链),而“@After”方法则按相反的顺序执行(向上继承链)。
TestNG.xml文件样例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- @BeforeSuite -->
<suite name="All Test Suite">
<test verbose="1" preserve-order="true" name="Z:\\project\\XunitDemo">
<!-- @BeforeGroups -->
<groups>
<dependencies>
<group name="group1" depends-on="" >
<classes>
<class name="QFDemo.LoginTest">
<methods>
<parameter name="username" value="lisi"></parameter>
<!-- 通过方法名来运行 -->
<include name="testUserLogin"></include>
<exclude name="testUserLogin1"></exclude>
</methods>
</class>
<!-- 通过类名来运行 -->
<class name="QFDemo.DataProviderParameterTest"></class>
</classes>
</group>
<!-- 通过groupName来运行 -->
<group name="group2" depends-on="">
<run>
<!-- 测试方法上可以定义groups = {"",""} -->
<include name="1group1"></include>
<exclude name="1group2"></exclude>
</run>
</group>
</dependencies>
</groups>
</test>
</suite>
<!-- @AfterSuite -->
下表列出了所有的<suite>可接受合法属性。
| 属性 | 描述 |
|---|---|
| name | 此套件的名称。这是一个强制性的属性。 |
| verbose | 这个运行级别或冗长。一般verbose=从0到9的数,数越大表明testng的日志越详细,一般verbose=2 |
| parallel | 由TestNG 运行不同的线程来运行此套件。 |
| thread-count | 使用的线程数,如果启用并行模式(忽略其他方式)。 |
| annotations | 在测试中使用注释的类型。 |
| time-out | 默认的超时时间,将用于本次测试中发现的所有测试方法。 |
- parallel =“methods”:TestNG将在不同的线程中运行所有测试方法。依赖方法也将在单独的线程中运行,但它们将遵循您指定的顺序。
- parallel =“tests”:TestNG将在同一个线程中运行相同<test>标记中的所有方法,但每个<test>标记将位于一个单独的线程中。这允许您在同一个<test>中对所有非线程安全的类进行分组,并保证它们将在同一个线程中运行,同时利用TestNG使用尽可能多的线程来运行测试。
- parallel =“classes”:TestNG将在同一个线程中运行同一个类中的所有方法,但每个类将在一个单独的线程中运行。
- parallel =“instances”:TestNG将在同一个线程中运行同一实例中的所有方法,但两个不同实例上的两个方法将在不同的线程中运行。
带注释的依赖关系:
可以使用属性dependsOnMethods或dependsOnGroups(接受正则表达式作为参数),对发现的@Test注解。
硬依赖:您依赖的所有方法必须运行并成功运行。如果您的依赖项中至少发生一次故障,则不会在报告中调用并将其标记为SKIP。
软依赖:您将始终在您依赖的方法之后运行,即使其中一些方法失败了。当您只是想确保您的测试方法按特定顺序运行时,这很有用,但它们的成功并不真正取决于其他人的成功。通过在@Test注释中添加“alwaysRun = true”来获得软依赖关系。
类级别注释:
类级@Test注释的作用是使该类的所有公共方法成为测试方法,即使它们没有注释。如果要添加某些属性,仍可以在方法上重复@Test注释。
忽略测试(使用注解@Ignore):
- In a class
- In a particular package
- In a package and all of its child packages
支持YAML文件作为指定套件文件:
<!-- XML文件 -->
<suite name="SingleSuite" verbose="2" thread-count="4"> <parameter name="n" value="42" /> <test name="Regression2">
<groups>
<run>
<exclude name="broken" />
</run>
</groups> <classes>
<class name="test.listeners.ResultEndMillisTest" />
</classes>
</test>
</suite> <!-- 对应YAML文件 -->
name: SingleSuite
threadCount: 4
parameters: { n: 42 } tests:
- name: Regression2
parameters: { count: 10 }
excludedGroups: [ broken ]
classes:
- test.listeners.ResultEndMillisTest
数据驱动(参数类型可以任意对象:List、Map、String等):
package QFDemo; import org.testng.annotations.BeforeGroups;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import java.util.ArrayList;
import java.util.List; public class DataProviderParameterTest { @BeforeGroups(groups = "group10")
public void groupsSetUp(){
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!groups!!!!!!!!!!!!!!!!!!!!!!!");
} @Test(parameters = {"user","password"})
public void testTwo(String user, String password){
System.out.println("user is : " + user + " password is : " + password);
} @Test(dataProvider = "listString", groups = "group10")
public void testOne(List<String> stringList){
for (String s:stringList){
System.out.println(s);
}
} @DataProvider(name = "listString")
public Object[][] provideP(){
List<String> listOne = new ArrayList<String>();
listOne.add("a");
listOne.add("b");
listOne.add("over");
return new Object[][] {{listOne}};
}
}
详情请至:https://testng.org/doc/documentation-main.html#introduction
Java--TestNG的更多相关文章
- 零成本实现接口自动化测试 – Java+TestNG 测试Restful service
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...
- java+testng接口测试入门
testNG是一个测试框架,它能组织测试用例按照你想要的方式进行运行,并输出一定格式的便于阅读的测试报告(结果),通过java+testng的方式说明一下接口测试的基本使用方法. 一.环境搭建 a)千 ...
- 接口自动化测试框架搭建 – Java+TestNG 测试Restful service
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...
- maven+selenium+java+testng+jenkins自动化测试
最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...
- selenium从入门到应用 - 1,环境准备(Java+TestNG+Maven+Selenium)
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境的 ...
- appium+Java+testng自动化框架搭建-第一季
app自动化越来越火,随着移动app的不断发展,手机端测试日益火爆,想成为一个高级软件测试工程师必须要掌握,那么我们今天就来搭建appium+Java+testng自动化测试框架. Appium环境搭 ...
- 自动化测试框架selenium+java+TestNG——配置篇
最近来总结下自动化测试 selenium的一些常用框架测试搭配,由简入繁,最简单的就是selenium+java+TestNG了,因为我用的是java,就只是总结下java了. TestNG在线安装: ...
- 基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport的接口自动化测试框架
接口自动化框架 项目说明 本框架是一套基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport而设计的数据驱动接口自动化测试框架,TestNG ...
- APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例
前言 前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相 ...
- APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例
前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...
随机推荐
- myeclipse安装jad反编译插件
有时候想深入底层看jar包封装的源代码,但是打不开.这就需要配置反编译插件: 1:准备原材料 jad.exe + net.sf.jadclipse_3.3.0.jar 下载目录: jad.exe : ...
- iis6.0 default web site 无法启动
按照以往方式打开http://localhost/blog2/index.asp时,意外被提醒出现错误:http 404 无法找到文件.一时感觉不知所措,怎么会出现这样的问题? 近来还碰到了一个问题, ...
- Java使用泛型实现栈结构
泛型是Java SE5.0的重要特性,使用泛型编程可以使代码获得最大的重用.由于在使用泛型时要指明泛型的具体类型,这样就避免了类型转换.本实例将使用泛型来实现一个栈结构,并对其进行测试. 思路分析:既 ...
- Ubuntu 14.04服务器安装及软件配置
1.安装操作系统,配置root账号,通过sudo设置root的密码 如果使用ubuntu server 14.04,开启root需额外配置 1.开启root远程登录权限 sudo vi /etc/ss ...
- 笔记--Wcf全面解析(上)---(1)
using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using ...
- 【Postgres】PostgreSQL配置远程连接
1.开启相应的防火墙端口,缺省是5432 2.访问权限配置,D:\Program Files (x86)\PostgreSQL\9.2\data/pg_hba.conf中加入如下配置,开启远程访问 3 ...
- Mysql Bypass小结
总结一些Bypass的方法, 1. 绕过空格过滤,使用注释/**/来替换 绕过安全狗简单的两个方法: /*'+'*/ /**a*/ 2.使用大小写绕过某些关键字的过滤 SeLeCT * From te ...
- iOS开发-修改UITableViewCell中image和title的位置和大小
最近在开发中遇到需要Cell中imageView和textLable位置和大小的情况,设计希望得到的结果如下图所示: 而TableViewCell默认样式,image是靠紧左边的,并且image和ti ...
- psutil的使用
psutil是Python中广泛使用的开源项目,其提供了非常多的便利函数来获取操作系统的信息. 此外,还提供了许多命令行工具提供的功能,如ps,top,kill.free,iostat,iotop,p ...
- 第十七篇:IO复用之select实现
前言 在看过前文:初探IO复用后,想必你已对IO复用这个概念有了初步但清晰的认识. 接下来,我要在一个具体的并发客户端中实现它(基于select函数),使得一旦服务器中的客户进程被终止的时候,客户端这 ...