testNG测试基础一
1.TestNG概念
TestNG:Testing Next Generation 下一代测试技术,是一套根据JUnit和Nunit思想构建的利用注释来强化测试功能的测试框架,可用来做单元测试,也可用来做集成测试,测试人员一般用TestNG来写自动化测试。 开发人员一般用JUnit写单元测试。
2.TestNg注解:

3. TestNg提供的最基本的注解之一就是Test注解,作用在方法或者类上,此注解支持的属性有:
1)alwaysRun:提供一个false or true值,如果设置为true,则被标记的方法会永远被执行,即使被标记方法所依赖的方法执行失败了。
2)dataProvider:此属性的值为标记方法提供数据驱动的数据源
3)dataProviderClass:此属性指出提供数据驱动方法的所在类
4)dependsOnGroups:此属性指出标记方法所依赖的组
5)dependsOnMethods:此属性支持标记方法所依赖的方法
6)description:标记方法的描述信息
7)enabled:标记方法是否要执行,默认为true执行
8)expectedExceptions:指定标记方法返回的异常信息列表
9)groups:指定标记方法归属于哪个组
10)timeOut:指定标记方法超时时长 (in millisecs)
11)invocationCount:被标记的方法会执行多次
12)threadPoolSize:启用多个线程执行被标记的方法,一般会与invocationCount一起使用;
4.关于TestNg的执行顺序问题,看下面是咧:
package com.testNG;
import org.testng.annotations.*;
public class NewTest {
@Test(dataProvider = "dp")
public void f(Integer n, String s) {
System.out.println(n+"---"+s);
}
@BeforeMethod
public void beforeMethod() {
System.out.println("@beforeMethod");
}
@AfterMethod
public void afterMethod() {
System.out.println("@AfterMethod");
}
@DataProvider
public Object[][] dp() {
return new Object[][] {
new Object[] { 1, "a" },
new Object[] { 2, "b" },
};
}
@BeforeClass
public void beforeClass() {
System.out.println("@beforeClass");
}
@AfterClass
public void afterClass() {
System.out.println("@afterClass");
}
@BeforeTest
public void beforeTest() {
System.out.println("@beforeTest");
}
@AfterTest
public void afterTest() {
System.out.println("@afterTest");
}
@BeforeSuite
public void beforeSuite() {
System.out.println("@beforeSuite");
}
@AfterSuite
public void afterSuite() {
System.out.println("@afterSuite");
}
}
执行结果如下:
@beforeSuite
@beforeTest
@beforeClass
@beforeMethod
1---a
@AfterMethod
@beforeMethod
2---b
@AfterMethod
@afterClass
@afterTest
PASSED: f(1, "a")
PASSED: f(2, "b") 此时顺序一目了然;
5.关于TestNg的相关测试,同样以实例举例:
1)编写Person简单测试类:
package com.testNG;
class Person {
private int age;
private String job;
public Person(int age, String job) {
super();
this.age = age;
this.job = job;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
2)编写Car简单测试类:
package com.testNG;
public class Car {
private String color;
private double money;
public Car(String color, double money) {
super();
this.color = color;
this.money = money;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
3)编写测试类:
package com.testNG;
import org.testng.Assert;
import org.testng.annotations.*;
import java.util.*;
public class NewTest {
@Test(dataProvider = "dp",priority=1) //仅用于做参数化测试,设置优先级,数值越小优先级越大
public void personinit(Integer age, String job) { //通过dp传值给Person参数化
Person person = new Person(age,job);
System.out.println(person.getAge()+"-------"+person.getJob());
}
@Test(priority=2,enabled=false) //enabled=false表明该测试方法可忽略
public void personcheck(){
Person xiaoming = new Person(23,"tester");
Person xiaowang = new Person(25,"singer");
try{ //断言判断人的年龄是否正确
Assert.assertEquals(xiaoming.getAge(), 23);
Assert.assertEquals(xiaowang.getAge(), 25);
System.out.println("小明和小王的年龄验证通过");
}catch(Exception e){
e.printStackTrace();
}
}
@Test(priority=3)
public void carcheck(){
Car baoma = new Car("red",250000);
Car bieke = new Car("black",100000);
try{ //断言判断车的颜色是否正确
Assert.assertEquals(baoma.getColor(), "red");
Assert.assertEquals(bieke.getColor(), "black");
System.out.println("宝马和别克的颜色验证通过");
}catch(Exception e){
e.printStackTrace();
}
}
@Test(priority=4)
public void buycar(){
System.out.println("小明买车了");
}
@Test(dependsOnMethods=("buycar")) //依赖测试,gohome要先有buycar才会实现
@Parameters("test1") //设置参数
public void gohome(String test1){
System.out.println("小明开自己买的"+test1+"回家了"); }
@BeforeMethod
public void beforeMethod() {
System.out.println("@beforeMethod");
}
@AfterMethod
public void afterMethod() {
System.out.println("@AfterMethod");
}
@DataProvider //提供Person实例化对象的数据
public Object[][] dp() {
System.out.println("@DataProvider");
return new Object[][] {
new Object[] { 20, "tester" },
new Object[] { 25, "worker" },
};
}
@BeforeClass
public void beforeClass() {
}
@AfterClass
public void afterClass() {
}
@BeforeTest
public void beforeTest() {
System.out.println("@beforeTest");
}
@AfterTest
public void afterTest() {
System.out.println("@afterTest");
}
}
4)配置文件如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" parallel="false">
<parameter name="test1" value="宝马" />
<test name="Test">
<classes>
<class name="com.testNG.NewTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
执行结果如下:
@beforeTest
@DataProvider
@beforeMethod
20-------tester
@AfterMethod
@beforeMethod
25-------worker
@AfterMethod
@beforeMethod
宝马和别克的颜色验证通过
@AfterMethod
@beforeMethod
小明买车了
@AfterMethod
@beforeMethod
小明开自己买的宝马回家了
@AfterMethod
@afterTest
PASSED: personinit(20, "tester")
PASSED: personinit(25, "worker")
PASSED: carcheck
PASSED: buycar
PASSED: gohome("宝马")
6.参考资料:
http://www.cnblogs.com/TankXiao/p/3888070.html#introduce
https://www.cnblogs.com/meitian/p/5221202.html
testNG测试基础一的更多相关文章
- Android测试基础题(三)
今天接着给大家带来的是Android测试基础题(三). 需求:定义一个排序的方法,根据用户传入的double类型数组进行排序,并返回排序后的数组 俗话说的好:温故而知新,可以为师矣 packag ...
- TestNG测试框架在基于Selenium进行的web自动化测试中的应用
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ TestNG+Selenium+Ant TestNG这个测试框架可以很好的和基于Selenium的 ...
- 零成本实现接口自动化测试 – Java+TestNG 测试Restful service
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...
- JAVA 利用MyEclipse结合TestNG测试框架进行单元测试
利用MyEclipse结合TestNG测试框架进行单元测试 by:授客 QQ:1033553122 测试环境 jdk1.8.0_121 myeclipse-10.0-offline-install ...
- css3背景颜色渐变属性 兼容性测试基础环境为:windows系统;IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+
css3背景颜色渐变属性 兼容性测试基础环境为:windows系统:IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+ 语法: <li ...
- 接口自动化测试框架搭建 – Java+TestNG 测试Restful service
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...
- 测试基础面试题 + SQL 面试题(选择题有部分答案,难度:低)
测试基础面试题 + SQL 面试题(选择题有部分答案,难度:低) 答案: .A .C .C .A .A .D
- 安全性测试:OWASP ZAP 2.8 使用指南(一):安全测试基础及ZAP下载、安装
概览 本文意在对于OWASP's Zed Attack Proxy(ZAP)软件做一个基本使用指南介绍. ZAP是一个用于实施安全性测试的工具,即使没有很强的安全测试背景也可以很好的使用. 为了达到这 ...
- 8-MySQL DBA笔记-测试基础
第三部分 测试篇 测试需要掌握的知识面很广泛,本篇的关注点是数据库的性能测试和压力测试,对于其他领域的测试,由于涉猎不多,笔者就不做叙述了.DBA的工作职责之一就是评估软硬件,这往往是一项很耗时的工作 ...
随机推荐
- mongodb 操作数据库
1.使用和创建数据库: use mydb //没有就创建 2.显示数据库 show dbs 3.显示数据库状态 db.stats() 4.检查当前所用的数据库 db 5.删除数据库(先用然后删除) u ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- R语言中的字符处理
R语言中的字符处理 (2011-07-10 22:29:48) 转载▼ 标签: r语言 字符处理 字符串 连接 分割 分类: R R的字符串处理能力还是很强大的,具体有base包的几个函数和strin ...
- 使用MySQL客户端登录Ensemble数据库查询相关信息
Ensemble公共MySQL数据库 对于大量数据和更详细的分析,Ensemble的MySQL服务器ensembldb.ensembl.org,useastdb.ensembl.org或asiadb. ...
- URAL 1297 Palindrome (后缀数组+RMQ)
题意:给定一个字符串,求一个最长的回回文子串,多解输出第一个. 析:把字符串翻转然后放到后面去,中间用另一个字符隔开,然后枚举每一个回文串的的位置,对第 i 个位置,那么对应着第二个串的最长公共前缀, ...
- hdu1062
#include<stdio.h> #include<string.h> int main() { int i,n,len,j,k,t; char s1]; scanf(&qu ...
- Bind,Options读取配置到C#实例
首先创建一个网站 Asp.net Core Mvc 空网站 起名叫做OptionsBindSample 通过Option和Bind将Json文件里面的配置转成C#里面的一个实体,相互之间映射起来 Bi ...
- 聊聊 CDN 缓存与浏览器缓存
CDN 是互联网上内容分发的重要一环.无论您之前是否了解过 CDN,其实它已经在您的日常生活中发挥作用了.比如您正在淘宝挑选心仪的商品,或者在观看一段令人捧腹的视频,以及您正在阅读的这篇文章,这些资源 ...
- PS2018学习笔记(19-24节)
19-随心所欲变换 # 本节知识点 自由变换 移动变换 旋转变换 斜切变换 变形变换 扭曲变换 透视变换 # 本节段落表 自由变换命令 变换中的移动 再次变换命令 对象缩放 旋转 斜切 变形 扭曲 透 ...
- php soap连接https的wsdl报错SOAP-ERROR: Parsing WSDL:Couldn't load from
转发:https://blog.csdn.net/keyunq/article/details/51804728 SOAP-ERROR: Parsing WSDL:Couldn’t load from ...