selenium webdriver读取excel进行数据驱动测试

简介: 最近做自动化需要从文件读取数据做参数化,网上发现一个不错的解决方案。 准备:新建一个excel文件,文件名为测试类名,sheet名为测试方法名         excel第一行为标题,从第二行开始为测试数据         build path:jxl.
最近做自动化需要从文件读取数据做参数化,网上发现一个不错的解决方案。
准备:新建一个excel文件,文件名为测试类名,sheet名为测试方法名
        excel第一行为标题,从第二行开始为测试数据
        build path:jxl.jar
code:
  1 import java.io.FileInputStream;
  2 import java.io.InputStream;
  3 import java.util.HashMap;
  4 import java.util.Iterator;
  5 import java.util.Map;
  6 
  7 import org.testng.Assert;
  8 
  9 import jxl.*;
 10 
 11 /**
 12  * Excel放在Data文件夹下</p>
 13  * Excel命名方式:测试类名.xls</p>
 14  * Excel的sheet命名方式:测试方法名</p>
 15  * Excel第一行为Map键值</p>
 16  * 代码参考郑鸿志的Blog
 17  * {@link www.zhenghongzhi.cn/post/42.html}
 18  * @ClassName: ExcelDataProvider
 19  * @Description: TODO(读取Excel数据)
 20  */
 21 public class ExcelDataProvider implements Iterator<Object[]> {
 22 
 23     private Workbook book         = null;
 24     private Sheet    sheet        = null;
 25     private int      rowNum       = 0;
 26     private int      currentRowNo = 0;
 27     private int      columnNum    = 0;
 28     private String[] columnnName;
 29 
 30     public ExcelDataProvider(String classname, String methodname) {
 31 
 32         try {
 33 
 34             int dotNum = classname.indexOf(".");
 35 
 36             if (dotNum > 0) {
 37                 classname = classname.substring(classname.lastIndexOf(".") + 1,
 38                         classname.length());
 39             }
 40             //从/data文件夹下读取以类名命名的excel文件
 41             String path = "data/" + classname + ".xls";
 42             InputStream inputStream = new FileInputStream(path);
 43 
 44             book = Workbook.getWorkbook(inputStream);
 45             //取sheet
 46             sheet = book.getSheet(methodname);
 47             rowNum = sheet.getRows();
 48             Cell[] cell = sheet.getRow(0);
 49             columnNum = cell.length;
 50             columnnName = new String[cell.length];
 51 
 52             for (int i = 0; i < cell.length; i++) {
 53                 columnnName[i] = cell[i].getContents().toString();
 54             }
 55             this.currentRowNo++;
 56 
 57         } catch (Exception e) {
 58             e.printStackTrace();
 59             Assert.fail("unable to read Excel data");
 60         }
 61     }
 62 
 63     public boolean hasNext() {
 64 
 65         if (this.rowNum == 0 || this.currentRowNo >= this.rowNum) {
 66 
 67             try {
 68                 book.close();
 69             } catch (Exception e) {
 70                 e.printStackTrace();
 71             }
 72             return false;
 73         } else {
 74             // sheet下一行内容为空判定结束
 75             if ((sheet.getRow(currentRowNo))[0].getContents().equals(""))
 76                 return false;
 77             return true;
 78         }
 79     }
 80 
 81     public Object[] next() {
 82 
 83         Cell[] c = sheet.getRow(this.currentRowNo);
 84         Map<String, String> data = new HashMap<String, String>();
 85         // List<String> list = new ArrayList<String>();
 86 
 87         for (int i = 0; i < this.columnNum; i++) {
 88 
 89             String temp = "";
 90 
 91             try {
 92                 temp = c[i].getContents().toString();
 93             } catch (ArrayIndexOutOfBoundsException ex) {
 94                 temp = "";
 95             }
 96 
 97             // if(temp != null&& !temp.equals(""))
 98             // list.add(temp);
 99             data.put(this.columnnName[i], temp);
100         }
101         Object object[] = new Object[1];
102         object[0] = data;
103         this.currentRowNo++;
104         return object;
105     }
106 
107     public void remove() {
108         throw new UnsupportedOperationException("remove unsupported.");
109     }
110 }
View Code

查看作者原文请点击这里


img_42a4adae4716d0e15c3eeaabfd040044.png

注:转载需注明出处及作者。

流柯      

目录
相关文章
|
11天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
62 19
Selenium IDE:Web自动化测试的得力助手
|
13天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
95 17
Selenium:强大的 Web 自动化测试工具
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
智能化软件测试:AI驱动的自动化测试策略与实践####
本文深入探讨了人工智能(AI)在软件测试领域的创新应用,通过分析AI技术如何优化测试流程、提升测试效率及质量,阐述了智能化软件测试的核心价值。文章首先概述了传统软件测试面临的挑战,随后详细介绍了AI驱动的自动化测试工具与框架,包括自然语言处理(NLP)、机器学习(ML)算法在缺陷预测、测试用例生成及自动化回归测试中的应用实例。最后,文章展望了智能化软件测试的未来发展趋势,强调了持续学习与适应能力对于保持测试策略有效性的重要性。 ####
|
26天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
29 6
|
28天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
29 1
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索AI驱动的自动化测试新纪元###
本文旨在探讨人工智能如何革新软件测试领域,通过AI技术提升测试效率、精准度和覆盖范围。在智能算法的支持下,自动化测试不再局限于简单的脚本回放,而是能够模拟复杂场景、预测潜在缺陷,并实现自我学习与优化。我们正步入一个测试更加主动、灵活且高效的新时代,本文将深入剖析这一变革的核心驱动力及其对未来软件开发的影响。 ###
|
2月前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
37 1
|
2月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
544 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
148 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
64 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)