第一种:dataProvider方式,注意注解test的名称一定要对应类名称和方法名
package test;
public class DataProvider {
@org.testng.annotations.DataProvider
public static Object[][] testdataProvider(){
return new Object[][]{{1,2,3},{4,5,6}};
}
}
package test;
import org.testng.Assert;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class Dome04Test {
@Test(dataProvider = "testdataProvider",dataProviderClass = test.DataProvider.class)
public void testadd(int a ,int b,int c){
Dome04Test dome04 = new Dome04Test();
int d =dome04.add(a,b);
Assert.assertEquals(c,d);
}
public int add(int a,int b){
return a+b;
}
}
第二种,test.xml格式,注意类名称的配置和方法名称的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="suite">
<test name="FirstProject" enabled="true" >
<classes>
<class name="test.Dome05testXml">
<methods>
<include name="testadd" />
<parameter name="a" value="1" />
<parameter name="b" value="2" />
<parameter name="c" value="3" />
</methods>
</class>
</classes>
</test>
</suite>
package test;
import org.testng.Assert;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class Dome05testXml {
@Test
@Parameters({"a","b","c"})
public void testadd(int a ,int b,int c){
Dome04Test dome04 = new Dome04Test();
int d =dome04.add(a,b);
Assert.assertEquals(c,d);
}
public int add(int a,int b){
return a+b;
}
}
第三种:通过excel传参,重点是读取excel值
读取excel的工具类如下:
package excelUtil;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class ExcelUtil {
// public Workbook workbook;
public List<List<String>> readXls(String path) throws Exception {
InputStream is = new FileInputStream(path);
// HSSFWorkbook 标识整个excel
XSSFWorkbook hssfWorkbook = new XSSFWorkbook (is);
List<List<String>> result = new ArrayList<List<String>>();
int size = hssfWorkbook.getNumberOfSheets();
// 循环每一页,并处理当前循环页
for (int numSheet = 0; numSheet < size; numSheet++) {
// HSSFSheet 标识某一页
Sheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 处理当前页,循环读取每一行
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
// HSSFRow表示行
XSSFRow hssfRow = ((XSSFSheet) hssfSheet).getRow(rowNum);
int minColIx = hssfRow.getFirstCellNum();
System.out.println("minColIx = " + minColIx);
int maxColIx = hssfRow.getLastCellNum();
System.out.println("maxColIx = " + maxColIx);
List<String> rowList = new ArrayList<String>();
// 遍历改行,获取处理每个cell元素
for (int colIx = minColIx; colIx < maxColIx; colIx++) {
// HSSFCell 表示单元格
XSSFCell cell = hssfRow.getCell(colIx);
if (cell == null) {
continue;
}
rowList.add(cell.toString());
}
result.add(rowList);
}
}
return result;
}
/**
* 测试工具类是否成功
* @param args
*/
public static void main(String[] args) {
String path = "C:\\Users\\wanggang231\\Desktop\\123456.xlsx";
try {
List<List<String>> result = new ExcelUtil().readXls(path);
System.out.println(result.size());
for (int i = 0; i < result.size(); i++) {
List<String> model = result.get(i);
System.out.println("字段:" + model.get(0) + "--> 长度:" + model.get(1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
测试类如下:
public class ExcelDomeTest {
@Test
public void excelData()throws Exception{
String path = "C:\\Users\\wanggang231\\Desktop\\123456.xlsx";
List<List<String>> resultlist = new ExcelUtil().readXls(path);
for (int i = 0;i<resultlist.size();i++){
List list = resultlist.get(i);
Assert.assertEquals(list.get(0),1);
}
}
}
第四种,通过数据库方式,就是利用数据库连接类进行查询数据库,然后再把获取到的数据进行处理遍历,得到想要的字段,赋给需要的方法进行测试。由于本地没有安装数据库,不进行展示了
好了以上就是testNG测试传参的四种方式,欢迎有不同看法的朋友进行批评和指正。
转载于:https://www.cnblogs.com/testDevelopement-1/p/10844424.html