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将在同一个线程中运行同一实例中的所有方法,但两个不同实例上的两个方法将在不同的线程中运行。

带注释的依赖关系:

  可以使用属性dependsOnMethodsdependsOnGroups(接受正则表达式作为参数),对发现的@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的更多相关文章

  1. 零成本实现接口自动化测试 – Java+TestNG 测试Restful service

    接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...

  2. java+testng接口测试入门

    testNG是一个测试框架,它能组织测试用例按照你想要的方式进行运行,并输出一定格式的便于阅读的测试报告(结果),通过java+testng的方式说明一下接口测试的基本使用方法. 一.环境搭建 a)千 ...

  3. 接口自动化测试框架搭建 – Java+TestNG 测试Restful service

    接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...

  4. maven+selenium+java+testng+jenkins自动化测试

    最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...

  5. selenium从入门到应用 - 1,环境准备(Java+TestNG+Maven+Selenium)

    本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境的 ...

  6. appium+Java+testng自动化框架搭建-第一季

    app自动化越来越火,随着移动app的不断发展,手机端测试日益火爆,想成为一个高级软件测试工程师必须要掌握,那么我们今天就来搭建appium+Java+testng自动化测试框架. Appium环境搭 ...

  7. 自动化测试框架selenium+java+TestNG——配置篇

    最近来总结下自动化测试 selenium的一些常用框架测试搭配,由简入繁,最简单的就是selenium+java+TestNG了,因为我用的是java,就只是总结下java了. TestNG在线安装: ...

  8. 基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport的接口自动化测试框架

    接口自动化框架 项目说明 本框架是一套基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport而设计的数据驱动接口自动化测试框架,TestNG ...

  9. APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例

    前言     前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相 ...

  10. APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例

    前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...

随机推荐

  1. Linux-PAM认证机制

    http://www.cnblogs.com/marility/articles/9235522.html https://www.jianshu.com/p/342c05b51b7c https:/ ...

  2. HTML5 标准规范完成了

    ​    ​万维网联盟(W3C)昨天宣布,HTML5 标准规范终于最终制定完成了,并已公开发布.对于前端工程师来说,这无疑是一个振奋人心的好消息. ​    ​众所周知,HTML5改变了互联网,将成为 ...

  3. python 导入模块的坑。为什么整个项目能运行,单独运行某个文件模块就报错?多层目录不同文件夹怎么导入?

    一些文章介绍了python不同目录怎么导入问题,但py文件运行起点却从来没有文章说过!这是相当重要的!! 这个连接是网上99%的所讲的导入 https://www.cnblogs.com/luoye0 ...

  4. c++友元函數---16

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例 ...

  5. Cordova 问题点备忘

    1 cordova File插件问题 cordova 5.0创建本地文件夹 目录变成了 file:///data/user/0/com.xxx.xxx/xxx 4.0 是 file:///storag ...

  6. 3D物体识别的如果检验

    3D物体识别的如果验证 这次目的在于解释怎样做3D物体识别通过验证模型如果在聚类里面.在描写叙述器匹配后,这次我们将执行某个相关组算法在PCL里面为了聚类点对点相关性的集合,决定如果物体在场景里面的实 ...

  7. UITextField中文输入法输入时对字符长度的限制 输入时对字符类型的限制

    检索一个字符串的长度的话:直接用 length,去进行判断就行了, 如果要检索字符串是否是自己要限制的类型的话,可以用正则表达式: 举个例子:   匹配9-15个由字母/数字组成的字符串的正则表达式: ...

  8. vmware centos7系统虚拟机复制到其他电脑后不能联网问题解决

    虚拟机复制到别的电脑后,无法联网 使用ifconfig命令,没有显示出IP4的网址信息(显示ens33文件配置信息) 在网上查看相关资料,大部分说是mac地址不一致导致 如果配置了mac地址,那么在/ ...

  9. LR 测试http协议xml格式数据接口

    Action() { lr_start_transaction("T1"); web_custom_request("xxxxHTTPRequest", &qu ...

  10. windows恶意软件删除工具(MRT.exe)检查计算机是否感染病毒使用图解

    Microsoft Windows恶意软件删除工具可以检查运行 Windows XP.Windows 2000 和 Windows Server 2003 的计算机是否受到特殊.流行的恶意软件(包括 ...