博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
testNG
阅读量:6916 次
发布时间:2019-06-27

本文共 4915 字,大约阅读时间需要 16 分钟。

hot3.png

安装

方式一:Eclipse安装(安装不上)

Help-> insert new software ->work with 输入 http://beust.com/eclipse

方式二

打开连接 https://marketplace.eclipse.org/content/testng-eclipse#group-external-install-button, 直接拖拽Eclipse图标到打开的工程项目中。

注解

注解用来标注测试用例是否执行,以及执行的时间、顺序 注解加在方法前,这个方法会当测试项执行; 注解加在类前,类中的所有方法都会当测试项执行;

  • @Test:注解测试用例,在"Run as-TestNG Test"时,会执行;
  • @BeforeSuite:在测试集运行之前运行。
  • @AfterSuite:在测试集运行之后运行
  • @BeforeTest:执行测试方法之前运行。
  • @AfterTest:执行测试方法之后运行。
  • @BeforeGroups:在测试组第一个测试方法之前运行。
  • @AfterGroups:在测试组最后一个测试方法之后运行。
  • @BeforeClass- 在当前类的第一个测试方法之前运行。
  • @AfterClass - 运行当前类中的所有测试方法之后都运行。
  • @BeforeMethod - 在每个测试方法之前运行。
  • @AfterMethod - 在每个测试方法之后运行。

使用xml控制测试用例的执行

xml执行:右键-Run as-TestNG Test

异常检查 expectedExceptions

expectedExceptions 检查抛出的异常是否正确,

public class Test {	@Test(expectedExceptions = ArithmeticException.class)	public void test1() {		int i = 1 / 0;	//1/0会抛出ArithmeticException异常,会被@Test注解的expectedExceptions捕获,	}}

禁用测试用例 enabled

使用enabled葫芦哦不想执行某些测试用例,

@Test(enabled = true)	//执行测试项public void test1() {	System.out.println("test1");}@Test(enabled = false)	//忽略测试项public void test2() {	System.out.println("test2");}

超时 timeOut

timeOut,设置测试用例的超时时间,如果超过超时时间没有执行完成,则认定为执行失败。超时时间以毫秒为单位。

@Test(timeOut = 1000)	//1S内用例没有执行完成,认定为超时,执行失败public void test2() {	System.out.println("test2");}

测试组

将测试用例分组分别执行。 分组可以在类上应用,类的每个公共方法都属于该分组。

@Test(dependsOnGroups = {"test1", "test2"})	//组依赖:只有test1和test2组中的用例都执行完,才会执行test7public void test7() {	System.out.println("test7");}@Test(groups = "test1")public void test1() {	System.out.println("test1");}@Test(groups = "test2")public void test2() {	System.out.println("test2");}@Test(groups = "test1")public void test3() {	System.out.println("test3");}@Test(groups = "test2")public void test4() {	System.out.println("test4");}
  • xml执行测试组,必须要指定class,否则测试组不会执行。
  • xml文件中,groups要写在Classes之前,否则会报错。

test.xml常用方法

指定package

指定执行的类和方法;排除不执行的方法

//指定执行的组
//指定不执行的组
//指定不执行的方法

依赖

  • dependsOnMethods:依赖方法
  • dependsOnGroups:依赖组
  • 如果依赖的方法或组执行失败,则会跳过后续所有操作。
@Test(dependsOnGroups = {"test1", "test2"})public void test7() {	System.out.println("test7");}@Test(groups = "test1", dependsOnMethods = {"test2"})public void test1() {	System.out.println("test1");}

传递参数

使用xml传递参数

xml中使用parameter定义参数的名称和值

方法中通过@Parameters使用xml的参数

public class test1 {	@Test	@Parameters({"par1", "par2"})	public void test(String par1, String par2) {		System.out.println("par1 = " + par1);		System.out.println("par2 = " + par2);	}}

使用dataProvider传值

注解为@DataProvider的方法,返回值必须是 Object[][]

public class test1 {		@Test(dataProvider = "dataProvider")	public void test(int n, int m, Boolean flag) {		assertTrue((n == m) == flag);	}		@DataProvider(name = "dataProvider")	public Object[][] test2() {		return new Object[][] { { 10, 10, true}, { 100, 110 ,false}, { 200, 200 ,true} };	}}
@Test(dataProvider = "dataProvider")public void test(Map
map) { for (Map.Entry
entry : map.entrySet()) { System.out.println("[Key] : " + entry.getKey() + " [Value] : " + entry.getValue()); }}@DataProvider(name = "dataProvider")public Object[][] test2() { Map
data = tes3(); return new Object[][] { {data} };}public Map
tes3() { Map
map = new HashMap
(); map.put("13", "13"); map.put("23", "23"); return map;}

根据方法名,返回不同数据

@Test(dataProvider = "dataProvider")public void test(int n, int m) {	System.out.println(n + m);}@Test(dataProvider = "dataProvider")public void test_1(int n, int m) {	System.out.println(n + m);}@DataProvider(name = "dataProvider")public Object[][] test2(Method method) {	if (method.getName().equals("test")) {		return new Object[][] { {1,2} };	}else {		return new Object[][] { {3,4} };	}}

根据分组名,返回不同参数

@Test(dataProvider = "dataProvider", groups = { "group1" })public void test(int n, int m) {	System.out.println(n + m);}@Test(dataProvider = "dataProvider", groups = { "group2" })public void test_1(int n, int m) {	System.out.println(n + m);}@DataProvider(name = "dataProvider")public Object[][] test2(ITestContext context) {	for (String group: context.getIncludedGroups()) {		if (group.equals("group1")) {			return new Object[][] { {1,2} };		}	}		return new Object[][] { {3,4} };}

转载于:https://my.oschina.net/mexiaobai1315/blog/3010674

你可能感兴趣的文章
搭建BugFree Bug管理平台
查看>>
支付宝和微信支付的各种坑
查看>>
程序员的职业素养
查看>>
C++虚函数与重定义的区别
查看>>
Mysql5.6—分区表及独享表空间
查看>>
Python 2.6.8, 2.7.3, 3.1.5, 3.2.3 发布
查看>>
二维码一
查看>>
linux下LVM相关知识(动态增减LVM,快照功能)的总结
查看>>
移动分发再现3Q大战 腾讯瞄准360展开追逐
查看>>
C#学习基本概念之关键字--ref与out
查看>>
tomcat cluster和tomcat+memcached实现Session会话保持
查看>>
vim基础知识总结
查看>>
编译安装和软件包安装
查看>>
利用PXE实现无人值守安装Linux操作系统
查看>>
linux系统文件权限
查看>>
Foxmail设置方法
查看>>
#pragma once与 #ifndef的区别
查看>>
Spark排错与优化
查看>>
关于Java线程状态
查看>>
详解DNS的常用记录(上):DNS系列之二
查看>>