数据驱动测试二:使用TestNG和CSV文件进行数据驱动
转载:https://blog.csdn.net/heart_1014/article/details/52013173
使用@DataProvider注解定义当前方法中的返回对象CSV文件(存放测试数据)作为测试脚本的测试数据集进行数据驱动。
用法参考代码:
代码在搜索完成后使用显式等待方式,确认页面已经加载完成,页面底部的关键字"搜索帮助"已经显示在页面上
- //从CSV文件中读取每行中前2个逗号分割的中文词作为搜索框中输入的搜索关键词
- //断言搜索结果页面是否包含CSV文件中每行的最后一个词汇的关键字
- import java.io.BufferedReader;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.TimeUnit;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebDriver;
- import org.openqa.selenium.firefox.FirefoxDriver;
- import org.openqa.selenium.support.ui.ExpectedCondition;
- import org.openqa.selenium.support.ui.WebDriverWait;
- import org.testng.Assert;
- import org.testng.annotations.AfterMethod;
- import org.testng.annotations.BeforeMethod;
- import org.testng.annotations.DataProvider;
- import org.testng.annotations.Test;
- public class TestDataByCSVFile {
- private static WebDriver driver;
- @DataProvider(name="searchData")
- public static Object[][] data() throws IOException
- {
- return getSearchData("E:\\AutoData\\testData.csv");//获取CSV文件的测试数据
- }
- @Test(dataProvider="searchData")
- public void testSearch(String searchdata1,String searchdata2,String searchResult) {
- //打开sogou首页
- driver.get("http://www.sogou.com/");
- //输入搜索条件
- //从CSV文件中读取每行中前2个逗号分割的中文词作为搜索框中输入的搜索关键词,在两个搜索词中间增加一个空格
- driver.findElement(By.id("query")).sendKeys(searchdata1+" "+searchdata2);
- //单击搜索按钮
- driver.findElement(By.id("stb")).click();
- //使用显式等待方式,确认页面已经加载完成,页面底部的关键字"搜索帮助"已经显示在页面上
- (new WebDriverWait(driver,3)).until(new ExpectedCondition<Boolean>(){
- @Override
- public Boolean apply(WebDriver d) {
- return d.findElement(By.id("sogou_webhelp")).getText().contains("搜索帮助");
- }});
- //断言搜索结果页面是否包含CSV文件中每行的最后一个词汇的关键字
- Assert.assertTrue(driver.getPageSource().contains(searchResult));
- }
- @BeforeMethod
- public void beforeMethod() {
- //若无法打开Firefox浏览器,可设定Firefox浏览器的安装路径
- System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
- //打开Firefox浏览器
- driver=new FirefoxDriver();
- //设定等待时间为5秒
- driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
- }
- @AfterMethod
- public void afterMethod() {
- //关闭打开的浏览器
- driver.quit();
- }
- //读取CSV文件的静态方法,使用CSV文件的绝对文件路径作为函数参数
- public static Object[][] getSearchData(String FileNameroot) throws IOException{
- List<Object[]> records=new ArrayList<Object[]>();
- String record;
- //设定UTF-8字符集,使用带缓冲区的字符输入流BufferedReader读取文件内容
- BufferedReader file=new BufferedReader(new InputStreamReader(new FileInputStream(FileNameroot),"UTF-8"));
- //忽略读取CSV文件的标题行(第一行)
- file.readLine();
- //遍历读取文件中除第一行外的其他所有内容并存储在名为records的ArrayList中,每一行records中存储的对象为一个String数组
- while((record=file.readLine())!=null){
- String fields[]=record.split(",");
- records.add(fields);
- }
- //关闭文件对象
- file.close();
- //将存储测试数据的List转换为一个Object的二维数组
- Object[][] results=new Object[records.size()][];
- //设置二位数组每行的值,每行是一个Object对象
- for(int i=0;i<records.size();i++){
- results[i]=records.get(i);
- }
- return results;
- }
- }
运行结果:
- PASSED: testSearch("老九门", "演员", "赵丽颖")
- PASSED: testSearch("X站警天启", "导演", "布莱恩·辛格")
- PASSED: testSearch("诛仙青云志", "编剧", "张戬")
- ===============================================
- Default test
- Tests run: 3, Failures: 0, Skips: 0
- ===============================================
测试数据的CSV文件内容:
搜索关键词1,搜索关键词2,搜索结果
老九门,演员,赵丽颖
X站警天启,导演,布莱恩·辛格
诛仙青云志,编剧,张戬
注意:使用写字板程序编辑CSV文件内容,在保存文件时要将文件存储为UTF-8编码格式。
数据驱动测试二:使用TestNG和CSV文件进行数据驱动的更多相关文章
- 使用TestNG 和 CSV文件进行数据驱动
package testNGPractice; import java.io.BufferedReader; import java.io.FileInputStream; import java.i ...
- Jmeter自动化测试 数据驱动测试,将数据存入csv文件中来调用,或将数据存在DB中进行调用
1. 将测试的用例名称,测试请求方式,测试链接,预置数据,断言等都放到excel中,然后转成csv格式,在用Jmeter带的csv数据配置文件导入 运行之前将线程组中配置,线程数设置为1,循环的次数设 ...
- Selenium+java - 使用csv文件做数据驱动
前言 早期我们使用TestNG 来做数据驱动进行测试,测试数据是写在测试用例脚本中.这会使得测试脚本的维护工作量很大.因此我们可以将测试的数据和脚本分开. 而我们经常使用会使用csv文件来做为导出数据 ...
- 自动化测试框架selenium+java+TestNG——读取csv文件
读取csv文件可以直接读取,也可以使用javacsv.jar,后者比较简单,这个也可以变相认为是对表格的处理,我们可以在表格中做好数据,存储成csv格式的文件,后续对xlsx表格的操作抽个时间再记录下 ...
- selenium java读取csv文件 (数据驱动)
javacsv2.1 下载地址:http://sourceforge.net/projects/javacsv/files/ 该链接可以下载java读取csv文件的jar 包.下载之后解压找到对应的. ...
- (Python基础教程之十二)Python读写CSV文件
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- selenium自动化测试之【数据驱动测试】
数据驱动测试是自动化测试的主流设计模式之一,相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为进行了完全的分离,这样的测试脚本设计模式称为数据驱动.实施数据驱动测试的步骤:1.编写测试脚本,脚 ...
- 使用jmeter+ant进行接口自动化测试(数据驱动)之二:利用apache-ant执行测试用例并生成HTML格式测试报告
在 使用jmeter+ant进行接口自动化测试(数据驱动)之一 介绍了如何使用csv文件来批量管理接口 本次接着介绍如何利用apache-ant执行测试用例并生成HTML格式测试报告 ①下载安装 ap ...
- 如何快速掌握DDT数据驱动测试?
1.前言 (网盗概念^-^)相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动.(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用 ...
随机推荐
- 推荐一个文献翻译软件--Deja Vu X
首先我的这篇博客推荐的软件并非你觉得翻译精确度有多高的软件,假设是这种话就不用往下看了,免得浪费时间,仅仅是一个对于翻译文献非常方便的工具,方面在哪请看下文. 我是不会告诉你凡事用过这个软件的人都说好 ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
- 初识序列化和反序列化,使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列化
序列化是将对象转换成字节流的过程,反序列化是把字节流转换成对象的过程.对象一旦被序列化,就可以把对象状态保存到硬盘的某个位置,甚至还可以通过网络发送给另外一台机器上运行的进程.本篇主要包括: ● 使用 ...
- AutoMapper在MVC中的运用小结
配置.单元测试.AOP注入 Decimal转换成String类型 源数组转换成目标数组 源中的集合(数组)属性转换成目标中的集合(数组)属性 子类父类间的映射 源字典集合转换成目标字典集合 枚举映射 ...
- lua(wax框架) 适配 64位操作系统
======================使wax框架真正兼容64位系统========================== 苹果强制要求所有新提交的应用必须兼容64位,但原来使用lua的框架wax ...
- PPT幻灯片放映不显示备注,只让备注显示在自己屏幕上-投影机 设置
无论是老师或是讲师还是即将要演讲的人,在讲课之前一定会做好课件,到哪一页该讲哪些内容,到哪里该如何去讲等等.那么一般的讲师会将这些课件存放到哪里呢?是用个书本记载下来呢,还是直接存放到电脑上呢?其实本 ...
- C#编程(十六)----------匿名类型
匿名类型 var和new关键字一起使用,可以创建匿名类型. 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型. 类型名由编译器生成,并且不能在源代码级使用 ...
- 【python】安装Python 的IDE--PyCharm
[百度网盘-技术-pycharm破解需要的有安装包和破解jar] ================================================== 安装Tensorflow开发环境 ...
- WordPress主题开发:开启文章缩略图功能
安装wordpress后,默认的主题里编辑文章都会看见这个缩略图功能,那么我们自己开发的新主题怎么有这个功能呢? 目录: 一.开启缩略功能 二.设置缩略图大小 三.编辑文章,上传缩略图 四.调用缩略图 ...
- Mac iterm2 创建服务器列表