selenium webdriver testng自动化测试数据驱动
selenium webdriver testng自动化测试数据驱动
selenium webdriver testng自动化测试数据驱动
一、数据驱动测试概念
数据驱动测试是相同的测试脚本使用不同的测试数据执行,测试数据和测试行为完全分离。
二、实施数据驱动测试的步骤:
1、编写测试脚本,脚本需要支持程序对象、文件或者数据库读入测试数据。
2、将测试脚本使用的测试数据存入程序对象、文件或者数据库等外部介质中。
3、运行脚本,循环调用存储在外部介质的测试数据。
4、验证所有的测试结果是否符合期望的结果。
三、使用TestNG进行数据驱动
使用@DataProvider注解定义当前方法中的返回对象作为测试脚本的测试数据集。
用法参考代码:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
//搜索2个关键词,验证搜索结果页面是否包含期望的关键词
public class DataProviderDemo {
private static WebDriver driver;
@DataProvider(name="searchData")
public static Object[][] data()
{
return new Object[][] {{"老九门","演员","赵丽颖"},{"X站警天启","导演","布莱恩·辛格"},{"诛仙青云志","编剧","张戬"}};
}
@Test(dataProvider="searchData")
public void testSearch(String searchdata1,String searchdata2,String searchResult) {
//打开sogou首页
driver.get("http://www.sogou.com/");
//输入搜索条件
driver.findElement(By.id("query")).sendKeys(searchdata1+" "+searchdata2);
//单击搜索按钮
driver.findElement(By.id("stb")).click();
//单击搜索按钮后,等待3秒显示搜索结果
try{
Thread.sleep(3000);
}catch(InterruptedException e){
e.printStackTrace();
}
//判断搜索的结果是否包含期望的关键字
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();
}
}
运行结果:
PASSED: testSearch("老九门", "演员", "赵丽颖")
PASSED: testSearch("X站警天启", "导演", "布莱恩·辛格")
PASSED: testSearch("诛仙青云志", "编剧", "张戬")
===============================================
Default test
Tests run: 3, Failures: 0, Skips: 0
===============================================
上述代码表示测试方法中3个参数分别使用searchData测试数据集中每个一维数组中的数据进行赋值。
此方法会被调用3次,分别使用测试数据集中的三组数据。
selenium webdriver testng自动化测试数据驱动的更多相关文章
- Selenium WebDriver TestNg Maven Eclipse java 简单实例
环境准备 前提条件Eclipse 已经安装过 TestNg ,Maven 插件 新建一个普通的java项目 点击右键 configure->convert to Maven Project 之后 ...
- Selenium WebDriver + python 自动化测试框架
目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤.检查点,然后执行自动化工程,即可执行功能自动化测试用例 ...
- jmeter联合selenium webdriver进行自动化测试-简单1
jmeter进行webdriver测试 背景:jmeter可以联合selenium进行基本的UI自动化进行测试,解放了手工测试的压力.那么selenium webdriver完成GUI的流程初步如下 ...
- UI自动化测试篇 :Selenium2(Webdriver)&TestNG自动化测试环境搭建
最开始学习UI自动化,用的工具是QTP10,用起来确实比较容易上手,自学了没多久,大家都说QTP过时了.这么好用的的工具怎么一下子就过时了呢?因为它的“笨重”,因为它作为商业软件带来的巨大使用成本,还 ...
- 转载 基于Selenium WebDriver的Web应用自动化测试
转载原地址: https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ 对于 Web 应用,软件测试人员在日常的测试工作中, ...
- Selenium WebDriver中一些鼠标和键盘事件的使用
转自:http://www.ithov.com/linux/133271.shtml 在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击 ...
- Selenium WebDriver 中鼠标和键盘事件分析及扩展(转)
本文将总结 Selenium WebDriver 中的一些鼠标和键盘事件的使用,以及组合键的使用,并且将介绍 WebDriver 中没有实现的键盘事件(Keys 枚举中没有列举的按键)的扩展.举例说明 ...
- 转:总结Selenium WebDriver中一些鼠标和键盘事件的使用
在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...
- Selenium WebDriver 中鼠标和键盘事件分析及扩展[转载]
原文:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/ 概念 在使用 Selenium WebDriver 做自动化测试的时候,会经常模 ...
随机推荐
- 给用户授予权限时应该尽量避免ANY系统权限
Oracle推荐给用户授予权限时,给予用户可以完成操作的最小权限.应当尽量避免对用户授予包含ANY的系统权限,如SELECT ANY TABLE,CREATE ANY TABLE等.这些包含ANY的系 ...
- OGG日常运维监控的自动化脚本模板
#!/usr/bin/ksh export ORACLE_BASE=/oracle/ export ORACLE_SID=epmln1 export ORACLE_HOSTNAME=pmlnpdb1 ...
- shell 进制转换
包括: i.任意进制转化为十进制((num=base#number)) [base和number必须一致,是同一种进制] ii.十进制转化为任意进制`echo "obase=进制;值&quo ...
- ASP.NET Request.Cookies获取某个Cookie的奇怪问题
公司的某个产品依赖一个Cookie的值,发现在某些情况下即使Request附带了该Cookie(通过Fiddler2监控),服务器端通过HttpContext的Request.Cookies访问该Co ...
- 【CF653G】Move by Prime 组合数
[CF653G]Move by Prime 题意:给你一个长度为n的数列$a_i$,你可以进行任意次操作:将其中一个数乘上或者除以一个质数.使得最终所有数相同,并使得操作数尽可能小.现在我们想要知道$ ...
- Unity3D笔记十四 力
Unity中力的方式有两种:第一种为普通力,需要设定力的方向与大小:第二种为目标位置力,需要设定目标点的位置,该物体将朝向这个目标位置施加力. 1.案例 添加两个球体和一个立方体,另外还要给两个球体添 ...
- SAP全球企业官孙小群的生活智慧
转自:http://www.programmer.com.cn/15373/ 一下为程序员杂志对孙小群(Xiaoqun Clever)的采访. 最早接触计算机是在高中,那时发现通过一个小小的Basic ...
- Mac - Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
在终端输入mysql,结果出现 macdeMacBook-Pro:~ mac$ alias mysql=/usr/local/mysql/bin/mysql macdeMacBook-Pro:~ ma ...
- vue之指令系统
所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. OK,接下来我们 ...
- 找到多个与名为“xxx”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间以搜索与此请求相匹配的控制器,则会发生这种情况。
一次在建MVC 项目的进行开发的时候,因为后来想到了一个更好的项目名称,就把 Web项目的名称重命名 改了, 然后 程序集名称,默认命名空间,都改成新的了,刚建立的项目本身也不大,运行起来,总是报 & ...