自动化测试(三):QTP参数化
1 Datatable参数化
Global表的数据可以被所有的action访问,Action的数据只能被对应的Action访问
本地表循环的次数设置:Action Call Properties
Global表循环的次数设置:File -> Test Settings -> Run
注:
① Global全局变量循环一次,本地Action表全部运行一次
② 删除表的内容:Edit -> Delete
③ 修改列名:鼠标右击对应的列
Example4:Flight程序登录验证
Data Table:
|
|
username |
password |
errmsg |
|
1 |
mercury |
Please enter agent name |
|
|
2 |
mer |
mercury |
Agent name must be at least 4 characters long |
|
3 |
mercury |
Please enter passwoed |
|
|
4 |
mercury |
mercury |
null |
Text:
|
dialog("Login").WinEdit("Agent Name:").Set datatable("username","login") dialog("Login").WinEdit("Password").Set datatable("password","login") dialog("Login").WinButton("OK").Click expected_result = datatable("errmsg","login") If dialog("Login").Dialog("Flight Reservations").Exist Then actual_result = dialog("Login").Dialog("Flight Reservations").Static("errmsg").GetROProperty("text") if expected_result = actual_result Then reporter.ReportEvent micPass, "登陆验证","输入错误的用户名和密码,弹出正确的提示信息!" else reporter.ReportEvent micFail, "登陆验证","输入错误的用户名和密码,弹出错误的提示信息!" End if dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click else If expected_result = "null" Then If window("Fight Reservations").Exist Then Reporter.ReportEvent micPass, "登陆验证","输入正确的用户名和密码,登陆系统成功!" else Reporter.ReportEvent micFail, "登陆验证","输入正确的用户名和密码,登陆系统失败!" End If else Reporter.ReportEvent micFail, "登陆验证","输无效的用户名和密码,系统没有任何响应!" End If End If |
Practice2:Agileone自动登录验证
Data Table:
|
username |
password |
errmsg |
|
admin |
出错啦: 用户名不能为空 ... |
|
|
adm |
admin |
出错啦: 找不到该用户名 ... |
|
admin |
adm |
出错啦: 密码输入错误 ... |
|
admin |
admin |
null |
Text:
|
Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit").Set datatable("username","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit_2").Set datatable( "password","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").Image("loginbt").Click expected_result = datatable("errmsg","Action1") If Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").Exist Then actual_result = Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").GetROProperty("innertext") If expected_result = actual_result Then reporter.ReportEvent micPass,"登陆验证","输入错误的用户名和密码,提示正确的提示信息!" else reporter.ReportEvent micFail,"登陆验证","输入错误的用户名和密码,提示错误的提示信息!" End If else If expected_result = "null" Then If Browser("AgileOne - Welcome to").Page("AgileOne - Power to Agile").WebElement("wellcome").Exist Then reporter.ReportEvent micPass,"登陆验证","输入正确的用户名和密码,登陆系统成功!" Browser("AgileOne - Welcome to").Page("AgileOne - Power to Agile").Link("exit").Click else reporter.ReportEvent micFail,"登陆验证","输入正确的用户名和密码,系统登陆失败!" End If else reporter.ReportEvent micFail,"登陆验证","输入无效的用户名和密码,系统无响应!" End If End If |
2 Excle参数化
利用datatable对象导入
Import:将指定的Excle的所有数据导入,第一个sheet导入Global,第二个导入Action1,以此类推
ImportSheet:可将指定的sheet页导入到指定的表中,第一行默认导入为列标题
QTP只支持Excle2003,将Excle另存为Excle2003
Example1:datatabe.ImportSheet"C:\123.xls","Sheet1","Action1" (在代码开始前加入)
通过环境变量
环境变量设置:File -> Setting -> Environment -> Variable:User-defined 添加环境变量,用户定义的环境变量,需要自己定义变量名和值,定义好后就可以用这些变量去参数化脚本中的常量。
Example2:Dialog("Login").WinEdit("Agent Name:").Set Environment("password")
Example3:Excle读取、写入操作(Filith程序)
datatable:
|
username |
password |
errmsg |
actual_result |
test_result |
|
mercury |
Please enter agent name |
|||
|
mer |
mercury |
Agent name must be at least 4 characters long |
||
|
mercury |
Please enter passwoed |
|||
|
mercury |
mercury |
null |
Text:
|
datatabe.ImportSheet"C:\123.xls","login","Action1" For i=1 to datatable.GetSheet("Action1").GetRowCount dialog("Login").WinEdit("Agent Name:").Set datatable("username","Action1") dialog("Login").WinEdit("Password").Set datatable("password","Action1") dialog("Login").WinButton("OK").Click If dialog("Login").Dialog("Flight Reservations").Exist Then expected_result = datatable("errmsg","login") actual_result = dialog("Login").Dialog("Flight Reservations").Static("errmsg").GetROProperty("text") if expected_result = actual_result Then datatable("actual_result", "Action1")=actual_result datatable("test_result", "Action1")="pass" else datatable("actual_result", "Action1")=actual_result datatable("test_result", "Action1")="Fail" End If dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click End If datatable.GetSheet("Action1").SetNextRow Next datatable.Export"C:\Flight_result.xls" |
Practice1:Agileone登录读取、写入Excle(window7,需调试)
写入Excle的函数:
|
Function QTP_WriteExcel(sExcelName,SheetNum,x,y,Content) Set xlsobj=createobject("excel.application") Set xlsbook=xlsobj.Workbooks.Open(sExcelName) Set xlssheet=xlsbook.Sheets(SheetNum) xlssheet.cells(x,y)=Content xlsbook.Save xlsbook.Close End Function |
调用:QTP_WriteExcel"C:\Users\In_october\Desktop\agileone.xls","sheet2",5,5,"abcde"
Text:
|
Function QTP_WriteExcel(sExcelName,SheetNum,x,y,Content) Set xlsobj=createobject("excel.application") Set xlsbook=xlsobj.Workbooks.Open(sExcelName) Set xlssheet=xlsbook.Sheets(SheetNum) xlssheet.cells(x,y)=Content xlsbook.Save xlsbook.Close End Function Col=5 Row=2 datatable.ImportSheet"C:\Users\In_october\Desktop\agileone.xls","Sheet1","Action1" Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit").Set datatable("username","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit_2").Set datatable( "password","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").Image("loginbt").Click expected_result = datatable("errmsg","Action1") If Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").Exist Then actual_result = Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").GetROProperty("innertext") QTP_WriteExcel"C:\Users\In_october\Desktop\agileone.xls","sheet2",Row,Col,actual_result Row=Row+1 If expected_result = actual_result Then reporter.ReportEvent micPass,"登陆验证","输入错误的用户名和密码,提示正确的提示信息!" else reporter.ReportEvent micFail,"登陆验证","输入错误的用户名和密码,提示错误的提示信息!" End If else If expected_result = "null" Then If Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("wellcome").Exist Then reporter.ReportEvent micPass,"登陆验证","输入正确的用户名和密码,登陆系统成功!" Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").Link("exit").Click else reporter.ReportEvent micFail,"登陆验证","输入正确的用户名和密码,系统登陆失败!" End If else reporter.ReportEvent micFail,"登陆验证","输入无效的用户名和密码,系统无响应!" End If End If |
3 对象库管理
保存共享数据库:Action1的对象数据库 -> File -> Export Local Objects -> Save
关联共享数据库:Action2关联Action1的对象数据库:右键点击Action2 –> Association Repository to local -> 选择文件,Open,关联的对象数据库不能修改
关联的对象数据库修改:1.本地修改,加入到本地对象数据库 2.全局修改,在Objict Repository中修改
Action管理:调用Action 增加Action 划分Action Action管理的原则
Action管理的原则:
1.每个Action其实就是一个用户场景,如登录,订票,退出等
2.每个业务流程由若干个用户场景组成,即由若干个Action组成,在业务流程测试时需要首先分析该流程可以划分为多少个用户场景
3.Action划分的粒度以是否方便作为可复用Action被其他业务流程复用为标准,不能太粗也不能太细
Example1:订票业务场景(Flight程序)
订票业务场景,划分为3个业务场景:login,order,logout Reusable Action打勾才能被其他的调用
1.创建对象库,新建3个Action:login,order,logout
2.-> Record业务流程
3.Save Test
4.新建Action:Call to Copy of Action 选择Test
5.划分Action:定位鼠标,-> Split Action
自动化测试(三):QTP参数化的更多相关文章
- 【Jmeter基础知识】Jmeter的三种参数化方式
JMeter的三种参数化方式包括: 1.用户参数 2.函数助手 3.CSV Data Set Config 一.用户参数 位置:添加-前置处理器-用户参数 操作:可添加多个变量或者参数 二.函数助手 ...
- jmeter的三种参数化方法
JMeter的三种参数化方式包括: 1.用户参数 2.函数助手 3.CSV Data Set Config 一.用户参数 位置:添加-前置处理器-用户参数 操作:可添加多个变量或者参数 二.函数助手 ...
- python接口自动化测试三十六:数据驱动参数化之paramunittest
官方文档1.官方文档地址:https://pypi.python.org/pypi/ParamUnittest/2.github源码下载地址:https://github.com/rik0/Param ...
- 自动化测试工具QTP和SilkTest横向PK(转)
转自:http://www.uml.org.cn/Test/201405212.asp?artid=1686 众所周知,自动化测试工具曾几何时三足鼎立,Mercury QTP/WinRunner系.I ...
- QTP 参数化
PS:方法内容是转的别人的,我们项目中只用到了方法三,主要用于将测试数据与业务分离,增强测试数据的可维护性. 方法一.DataTable方法 这是QTP提供的一种方法,也是最容易实现参数化的一种方式. ...
- 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏
1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试 ...
- QTP参数化
使用QTP可以通过将固定值替换为参数,扩展测试范围,可以提高测试的灵活性. 在QTP中,我们可以对以下部分进行参数化: 1.对象属性参数化 2.对象名称的参数化 3.对象方法的参数的参数化
- jmeter的三种参数化
以FTP请求(用户.密码)为例:(其他都相同) 1.文件参数化 使用配置元件中的CSV Data Set Config 配置CSV Data Set Config: 文件中存储ftp登录的用户名和密码 ...
- Jmeter5.2.1 三种参数化
Jmeter的相关操作,一定要会参数化,常见的参数化方法有如下几种: 一.用户定义的变量 常应用于设置一些全局变量,包括url.host.port等等 线程组--添加--配置元件--用户定义的变量,添 ...
随机推荐
- 免费web直接打印的控件PAZU
PAZU 是4Fang 四方为配合"四方在线"软件于2004年开发的WEB打印控件,适用于各种WEB软件项目的打印.PAZU是客户端软件,使用于IE作为客户端的所有应用,与服务器端 ...
- bnuoj 29373 Key Logger(模拟双向队列)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=29373 [题意]:模拟光标输入 [题解]:用双向列表模拟实现,这里用其他模拟会超时,注意内存的释放 ...
- 盒模型------CSS
盒子的内心世界 1.模型 通过CSS的眼睛 在CSS看来,HTML的所有元素都被看成了盒子:段落,标题,块引用,列表,列表项等.甚至内联元素. 盒子的组成 内容区(content):包含内容(文本或图 ...
- 1059: [ZJOI2007]矩阵游戏 - BZOJ
Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两 ...
- 对JAVA动态代理的理解
叫动态代理就代表着有“静态代理”这回事. 而且,通常“动态”至少听着更NB一点. 关键就在于不明白啥叫“动”,这个得跟“静”比较下. 在我的理解,静态代理得自己声明一个类,实现跟被代理对象同样的接口. ...
- Python中pass语句的作用
http://mianshi.fenzhi.com/post/1529.html pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作,比如:while False:p ...
- 在linux下,查看一个运行中的程序, 占用了多少内存
1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...
- VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧
因为之前都是看别人的项目,而没有自己从头到尾建立一个项目,所以这次尝试搭建时就出现了问题,主要是ASP.Net MVC项目中VS2013和MySql的连接. 第一个问题: 数据库表已建好,相应的数据库 ...
- html代码究竟什么用途
1.html代码,只能浏览器识别并读出.渲染出网页图形 2.html代码可以本地写,用浏览器渲染出.也可以服务器端通过http协议传送过来,在网页显示. 咱们上网看的网页都是服务器端通过http协议传 ...
- Linux如何在虚拟机中挂载iso yum源
首先,将作为源的iso的挂载到系统上. 代码如下: mount -o loop /dev/cdrom /mnt/iso/ 或者 mount -o loop /xxx/xxx.iso /mnt/iso/ ...