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接口实战(国家气象局接口自动 ...
随机推荐
- Bootstrap——网站添加字体图标
@font-face { font-family: 'itcast'; src: url('../font/MiFie-Web-Font.eot') format('embedded-opentype ...
- 【高级算法】遗传算法解决3SAT问题(C++实现)
转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46910079 1 SAT问题描写叙述 命题逻辑中合取范式 (CNF) 的可满足性问 ...
- ios开发之--所有设备的屏幕尺寸
所有设备型号官网地址:https://www.theiphonewiki.com/wiki/Models iPhone: 机型 像素 比例 像素密度 屏幕尺寸 机型代码 发布日期 iPhone 2g ...
- iptables相关操作以及简单理解端口和服务之间关系
一般CentOS7默认安装的是firewall不是iptables 1.查看firewall状态 firewall-cmd --state 关闭后显示not running,开启后显示running ...
- Android开发-- findViewById()方法得到空指针
如果想通过调用findViewById()方法获取到相应的控件,必须要求当前Activity的layout通过setContentView. 如果你通过其他方法添加了一个layout,如需获取这个la ...
- 编译Android 必须安装的库
要安装的库: 正在卸载 build-essential ...正在卸载 g++-multilib ...正在卸载 g++ ...正在卸载 gcc-multilib ...正在卸载 gcc ...正在卸 ...
- commons-beanutils的使用
commons-beanutils是通过内省来完成的. 需要两个包: commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar JavaBean类: ...
- Python系统编程笔记
01. 进程与程序 编写完毕的代码,在没有运行的时候,称之为程序 正在运行着的代码,就称为进程 进程是系统分配资源的最小单位. 进程资源包括: 中间变量 代码 计数器 02. 通过os.fork()函 ...
- __declspec(dllimport)与__declspec(dllexport)作用总结
参考自:http://bbs.csdn.net/topics/330169671 __declspec(dllexport):导出符号,也就是定义需要导出函数的dll中给导出函数的函数声明前面加上导出 ...
- codeforces水题100道 第十五题 Codeforces Round #262 (Div. 2) A. Vasya and Socks (brute force)
题目链接:http://www.codeforces.com/problemset/problem/460/A题意:Vasya每天用掉一双袜子,她妈妈每m天给他送一双袜子,Vasya一开始有n双袜子, ...