import com.cxy_fanwe.common.test_fanwe_qiantai;
import org.apache.http.Header;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.json.JSONObject;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;

public class fanwe_chongzhi {
private test_fanwe_qiantai login = new test_fanwe_qiantai();
private String url;
private ResourceBundle bundle;
@BeforeMethod
public void get_login_url(){
bundle = ResourceBundle.getBundle("application", Locale.CHINA);
url = bundle.getString("fanwe.qiantai.url");
}

//读取Excel文件,封装在object[][]中
public Object[][] read_excel_login(String filePath,String sheetName) throws Exception {
//声明一个File对象
File file = new File(filePath);
//创建FileInputStream对象用来读取Excel文件
FileInputStream inputStream = new FileInputStream(file);
//声明Workbook对象
Workbook workbook= null;
//获取文件的参数名,判断是.xlsx还是.xls
String fileExtentsName = filePath.substring(filePath.indexOf("."));
//如果是.xlsx 使用XSSFWorkbook对象进行实例化
//如果是.xls 使用HSSFWorkbook对象进行实例化
if (fileExtentsName.equals(".xlsx")){
workbook = new XSSFWorkbook(inputStream);
}else if (fileExtentsName.equals(".xls")){
workbook = new HSSFWorkbook(inputStream);
}

//获取sheet对象
Sheet sheet = workbook.getSheet(sheetName);
//获取行数 最后一行的行号-第一行
int rowcount = sheet.getLastRowNum()-sheet.getFirstRowNum();
//创建list 对象存储Excel的数据
List<Object[]> records = new ArrayList<Object[]>();
//从1开始,去除首行标题行
for (int i = 1; i <rowcount+1 ; i++) {
Row row = sheet.getRow(i);
String fileds[] = new String[row.getLastCellNum()];
for (int j = 0; j <row.getLastCellNum(); j++) {

Cell cell = row.getCell(j);
fileds[j] = row.getCell(j).toString();

}
records.add(fileds);
}
//将records数组转成二维数组
Object[][] result = new Object[records.size()][];
for (int i = 0; i <records.size() ; i++) {
result[i] = records.get(i);
}
return result;
}

//调用读取Excel的方法,获得Object二维数组
@DataProvider(name="loginname")
public Object[][] get_excel_login() throws Exception {
Object[][] result = read_excel_login("src/main/com/cxy_fanwe/data/fanwe_username.xls","fanwe_username");
return result;
}
//数据驱动批量登录
@Test(dataProvider = "loginname")
public void fawe_login_qudong(String loginname) throws Exception {
String url = "http://192.168.232.138/fanwe/index.php?ctl=user&act=dologin&fhash=jhJhXBLeIeLhigZFcmspHeEqyoOGxRrlesHfEyfjHaZqIQgwIR";
String uri = bundle.getString("fanwe.qiantai.login");
String url_login =url+uri;
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(url_login);
//设置请求头
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
//添加请求参数
String param = "email="+loginname+"&user_pwd=ZFhKdXpMSE5WS3JPRmRrYmVDSlFVdlpPY2JxbXluR2RoRFFCZ3BWa1BEcG9JeU5pc00lMjV1NjVCOSUyNXU3RUY0Y3h5MTIzNDU2JTI1dThGNkYlMjV1NEVGNg==&ajax=1";
StringEntity entity = new StringEntity(param);
post.setEntity(entity);
//发送post请求
CloseableHttpResponse response = client.execute(post);
//获取cookie
String cookie_login = response.getFirstHeader("Set-Cookie").getValue();
String result = EntityUtils.toString(response.getEntity());
//将响应结果装换成json
JSONObject jsonObject =new JSONObject(result);
int status = (int) jsonObject.get("status");
String info = (String) jsonObject.get("info");
System.out.println("status: "+status+" info: "+info);
Assert.assertEquals(2,status);
Assert.assertEquals("本站需绑定第三方托管账户,是否马上去绑定",info);
}
}

使用TestNG,Apahcje POI和Excel文件进测试行数据驱动测试的更多相关文章

  1. Java Struts2 POI创建Excel文件并实现文件下载

    Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...

  2. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

  3. POI生成EXCEL文件

    POI生成EXCEL文件 一.背景 根据指定格式的JSON文件生成对应的excel文件,需求如下 支持多sheet 支持单元格合并 支持插入图片 支持单元格样式可定制 需要 标题(title),表头( ...

  4. java使用jxl,poi解析excel文件

    public interface JavaExcel { /** * 使用jxl写excel文件 */ public void writeJxlExcel(); /** * 使用jxl读excel文件 ...

  5. 使用poi读写excel文件

    使用poi库测试了一下读取excel文件,效果不错,跟大家分享一下. 第一列是数值型,第二列是字符型,代码如下: package poi; import java.io.FileInputStream ...

  6. java通过poi编写excel文件

    public String writeExcel(List<MedicalWhiteList> MedicalWhiteList) { if(MedicalWhiteList == nul ...

  7. java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

    需要用的jar包如下: 如果是maven管理的项目,添加依赖如下: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&g ...

  8. poi解析Excel文件版本问题

    poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xls)的文件 XSSFWorkbook格式用来解析Excel2007(xlsx)的文件 如果用HSSF ...

  9. Java使用POI操作Excel文件

    1.简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式文件读和写的功能. 2.依赖的jar包 <!-- ex ...

随机推荐

  1. 浅谈C++11中的多线程(三)

    摘要 本篇文章围绕以下几个问题展开: 进程和线程的区别 何为并发?C++中如何解决并发问题?C++中多线程的基本操作 浅谈C++11中的多线程(一) - 唯有自己强大 - 博客园 (cnblogs.c ...

  2. XSS一些总结

    XSS一些总结 除了script以外大多标签自动加载触发JS代码大多用的都是on事件,以下标签都可以用下面的方法去打Cookie以及url等 常见标签 <img><input> ...

  3. ms17-010 永恒之蓝漏洞复现(CVE-2017-0143)

    0x01 首先对目标机的开放端口进行探测,我们可以使用探测神器nmap 发现开放的445端口,然后进行下一步的ms17-010的漏洞验证 0x02 打开MSF美少妇神器,用search命令搜索ms17 ...

  4. 利用漏洞破解win7密码

    一.利用5次shift漏洞破解win7密码 1.在未登录系统时,连续按5次shift键,弹出程序:C:\Windows\system32\sethc.exe 2.部分win7及win10可通过系统修复 ...

  5. 「SDOI2016」数字配对

    「SDOI2016」数字配对 题目大意 传送门 题解 \(a_i\) 是 \(a_j\) 的倍数,且 \(\frac{a_i}{a_j}\) 是一个质数,则将 \(a_i,a_j\) 质因数分解后,其 ...

  6. python 实时监控剪切板,并替换其中的部分内容,重新写入剪切板

    #实时监控剪贴板内容的变化,并替换其中的回车,换行,逗号,再写入剪切板,以供使用. import pyperclip import time last_string = pyperclip.paste ...

  7. 三、k8s集群可用性验证与调参(第一章、k8s高可用集群安装)

    作者:北京小远 出处:http://www.cnblogs.com/bj-xy/ 参考课程:Kubernetes全栈架构师(电脑端购买优惠) 文档禁止转载,转载需标明出处,否则保留追究法律责任的权利! ...

  8. 【Azure Redis 缓存】云服务Worker Role中调用StackExchange.Redis,遇见莫名异常(RedisConnectionException: UnableToConnect on xxx 或 No connection is available to service this operation: xxx)

    问题描述 在Visual Studio 2019中,通过Cloud Service模板创建了一个Worker Role的角色,在角色中使用StackExchange.Redis来连接Redis.遇见了 ...

  9. 学生信息管理系统--基于jsp技术和MySQL的简单增删改查

    web实现增删改查的方式有很多啊,对于初学者来说当然是要先了解各部分的传值的方式.本篇博客从jsp技术的最基础方面进行说明. 一.什么是jsp技术 首先,我们要了解什么是jsp技术. jsp技术是基于 ...

  10. 汉诺塔Python

    刚开始看python实现汉诺塔,自己想了很久才想明白,在这里记录一下,希望以后忘记能够立马记起. n=1时,可以直接a->c n=2时,可以借助b然后将a->c n=3时,可以将最上面的那 ...