天天看点

testNG框架的四种传参方式

第一种: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框架的四种传参方式
testNG框架的四种传参方式

第四种,通过数据库方式,就是利用数据库连接类进行查询数据库,然后再把获取到的数据进行处理遍历,得到想要的字段,赋给需要的方法进行测试。由于本地没有安装数据库,不进行展示了

好了以上就是testNG测试传参的四种方式,欢迎有不同看法的朋友进行批评和指正。

转载于:https://www.cnblogs.com/testDevelopement-1/p/10844424.html