大连企业网站开发,移动网站seo,今天秦皇岛最新通知公告,公司网站建设关键字描述DDT#xff0c;即数据驱动测试 Data Driver Test#xff0c;我曾经记录了一篇关于python的DDT框架#xff08;ExcelDDT数据驱动实例#xff09;#xff0c;那么java中的DDT是怎么样的呢#xff1f;在java中#xff0c;可以用testng的DataProvider和Excel实现。 首先建一… DDT即数据驱动测试 Data Driver Test我曾经记录了一篇关于python的DDT框架ExcelDDT数据驱动实例那么java中的DDT是怎么样的呢在java中可以用testng的DataProvider和Excel实现。 首先建一个文档TestData.xlsx里面内容如下 然后写一个读excel的公共类代码如下 /*** author Helen * date 2018年6月5日 */
package common;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; /*** 描述excel事件处理*/
public class MyExcel {
/*读取excel文件中的数据并生成数组*/SuppressWarnings(deprecation)public Object[][] readExcel(String filePath,String sheetName) throws IOException {BaseData bdata new BaseData();File file new File(bdata.getFilePath(filePath));//获取文件FileInputStream fileInputStream new FileInputStream(file);//读数据XSSFWorkbook workbook new XSSFWorkbook(fileInputStream);XSSFSheet sheet workbook.getSheet(sheetName);//读取指定标签页的数据int rowNum sheet.getPhysicalNumberOfRows();//获取行数(获取的是物理行数也就是不包括那些空行隔行的情况)int columNum sheet.getRow(0).getPhysicalNumberOfCells();//获取列数Object[][] data new Object[rowNum-1][columNum];//因为第一行作为字段名不需要记录所以只有[rowNum-1]行for(int i1;irowNum;i) {//从第二行开始取值for (int h 0; h columNum; h) {sheet.getRow(i).getCell(h).setCellType(Cell.CELL_TYPE_STRING);//先把类型设置为stringdata[i-1][h] sheet.getRow(i).getCell(h).getStringCellValue();//填充数组}}workbook.close();return data;}} excel的支持还需要在pom.xml加入如下内容 !--加入对excel的读写支持--!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion3.17/version/dependency 其次写一个数据源公共类数据源也可以直接写在测试类中如果写在测试类中就不用标名数据源所在class代码如下 /*** author Helen * date 2018年6月11日 */
package jinengxia_apiTest;import common.MyExcel;
import java.io.IOException;
import org.testng.annotations.DataProvider;/*** 描述接口测试的数据源*/
public class myApiTestData {MyExcel myExcel new MyExcel();DataProvider(name loginData)public Object[][] getLoginData() throws IOException {return myExcel.readExcel(src/test/java/testFile/TestData.xlsx,login);}
} 最后调用数据源代码如下 /*** author Helen * date 2018年6月5日 */
package jinengxia_apiTest;import static org.testng.Assert.assertEquals;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;import common.MyExcel;
import net.sf.json.JSONObject;/*** 描述用户授权相关接口*/
public class UserAuthorization {CloseableHttpClient httpCilent HttpClients.createDefault();HttpResponse httpResponse;MyExcel myExcel new MyExcel();Test(description 用户登录,dataProviderloginData,dataProviderClassmyApiTestData.class)public void login(String username,String password) throws URISyntaxException, ClientProtocolException, IOException {HttpUriRequest httpUriRequest RequestBuilder.post().setUri(new URI(http://api.**.***.com/**)).addParameter(username, username).addParameter(password, password).build();HttpClientContext localContext HttpClientContext.create();// 创建本地HTTP上下文,用于获取请求头cookies等内容httpResponse httpCilent.execute(httpUriRequest, localContext);String strResult EntityUtils.toString(httpResponse.getEntity());// 获得返回的结果JSONObject jsonObject JSONObject.fromObject(strResult);assertEquals(jsonObject.get(message), 登录成功);}} 执行测试结果如下 转载于:https://www.cnblogs.com/helenMemery/p/9167191.html