TestNg用例管理

一、TestNg的数据驱动

1. 数据驱动

1)什么是数据驱动?

·数据驱动是指在一个脚本固定的情况下,用数据来控制该脚本是否运行,以及运行的次数,还有每次运行时对应的参数

2)数据驱动的应用场景:

·比如我们在测试登录时,要测试用不同的账户登录,难道我们需要针对每一个账户去写一个脚本吗?这样显然是不明智的,于是,testng为我们提供了这个注脚,让我们只需要提供出数据,就可以控制脚本运行次数及相应的参数。

2. TestNg数据驱动(数据源)

1)实现方式:

·用注脚: @DataProvider

2)示例:

第一种实现方式:不指定name

 

 

 运行结果:

 

 

 

第二种方式:指定name

 

 

 运行结果:

 

 

 

二、TestNg用XML运行

TestNg的几种运行方式:

1. 以method为基点

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
	<test name="test1">
		<classes>
			<class name="com.test.ng1.test1">
				<methods>
					<include name="test2"/>
					<include name="test1"/>
				</methods>
			</class>
		</classes>
	</test>
</suite>

运行结果:

 

 

 

2. 以class为基点

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
	<test name="test1">
		<classes>
			<class name="com.test.ng1.test1">
			</class>
		</classes>
	</test>
</suite>

运行结果:

 

 

 3. 以package为基点

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
	<test name="test1">
		<packages>
			<package name="com.test.ng1"/>
		</packages>
	</test>
</suite>

 

三、TestNg用例管理

1. 用例管理原则——用例独立少依赖

package com.test.ng1;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
public class test1 {
	//无名的数据驱动,调用可以使用方法名
	@DataProvider
	public Object[][] logindata(){
		return new Object[][]{{"a"},{"b"}};
	}
	//因为数据驱动没有名字,搜易可以写方法名
	@Test(dataProvider="logindata")
	public void test1(String info){
		System.out.println(info);
	}
	//为数据驱动定义名字
	@DataProvider(name="longoutdata")
	public Object[][] logoutDataInfo(){
		return new Object[][]{{"1"},{"2"}};
	}
	//指定数据驱动的名字,而非方法名
	@Test(dataProvider="longoutdata")
	public void test2(String info){
	System.out.println(info);
	}
	@BeforeClass
	public void bClass(){
		System.out.println("BeforeClass");
	}
	@AfterClass
	public void aClass(){
		System.out.println("AfterClass");
	}
	@BeforeMethod
	public void setUp(){
	System.out.println("beforemethod,setUp");
	}
	@AfterMethod
	public void tearDown(){
	System.out.println("aftermethod,tearDown");
	}
}


————————————————
版权声明:本文为CSDN博主「jffhy2017」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jffhy2017/article/details/60972253

posted @ 2019-11-15 15:51  HkGov  阅读(605)  评论(0编辑  收藏  举报