自动化测试(三):QTP参数化

1 Datatable参数化

Global表的数据可以被所有的action访问,Action的数据只能被对应的Action访问

本地表循环的次数设置:Action Call Properties

Global表循环的次数设置:File -> Test Settings -> Run

 

注:

         ① Global全局变量循环一次,本地Action表全部运行一次

② 删除表的内容:Edit -> Delete

③ 修改列名:鼠标右击对应的列

 

Example4Flight程序登录验证

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

 

Practice2Agileone自动登录验证

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

Example1datatabe.ImportSheet"C:\123.xls","Sheet1","Action1" (在代码开始前加入)

通过环境变量

环境变量设置:File -> Setting -> Environment -> Variable:User-defined 添加环境变量,用户定义的环境变量,需要自己定义变量名和值,定义好后就可以用这些变量去参数化脚本中的常量。

Example2Dialog("Login").WinEdit("Agent Name:").Set Environment("password")

Example3Excle读取、写入操作(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"

Practice1Agileone登录读取、写入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

时间: 2024-10-14 11:54:56

自动化测试(三):QTP参数化的相关文章

QTP 参数化

PS:转的别人的 QTP 参数化 方法一.DataTable方法 这是QTP提供的一种方法,也是最容易实现参数化的一种方式.QTP针对DataTable对象提供了很多方法,可以对DataTable进行灵活的操作.DataTable分为Global和Local两种,Global所有的Action都可以用,而Local就是只能当前Action自己用. 通过DataTable做参数化最直接的方法就是在Keyword View视图下通过选项进行,这样即方便又减少出错的几率.单击要参数化项目的value列

【Jmeter基础知识】Jmeter的三种参数化方式

JMeter的三种参数化方式包括: 1.用户参数 2.函数助手 3.CSV Data Set Config 一.用户参数 位置:添加-前置处理器-用户参数 操作:可添加多个变量或者参数 二.函数助手 位置:按照1-2-3的步骤 操作:4中填写文件的位置,5中填写要读取的列的位置,第一列为0.点击[生成]按钮,拷贝字符串,去替换要参数化的值. 注意:Jmeter读取的文件中第一行没有标题,直接就是值了. 三.CSV Data Set Config 1.为文件所在的位置,可以建txt文档,然后,直接

自动化测试工具QTP的使用实例

1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试,用于功能测试和回归测试.使用QTP要求测试人员在测试前考虑好应用程序测试的内容,步骤,输入数据和期望的输出数据等. QTP由Mercury公司开发,该公司开发的同类产品还有LoadRunner,但是Mercury已被HP收购,如今两大企业级软件测试工具均属HP旗下的商业产品.QTP与LoadRun

jmeter(三)参数化

参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问. 一.准备脚本,测试数据 1.写一个脚本(可以用badboy工具录制),在jmeter中打开,找到有用户名和密码的页面.如下: 2.我们需要"参数化"的数据,用记事本写了五个用户名和密码,保存为.dat格式的文件,编码问题在使用CSV Data Set Config参数

jmeter的三种参数化

以FTP请求(用户.密码)为例:(其他都相同) 1.文件参数化 使用配置元件中的CSV Data Set Config 配置CSV Data Set Config: 文件中存储ftp登录的用户名和密码,用“,”隔开 将put和get请求中的用户名和密码用参数化设置:用${username}和${pwd} 更改线程组的线程数,这里我存储了三个用户,所以线程数为3 运行查看结果: 2.函数参数化 3.数据库参数化(正则表达式) 参考之前写的“jmeter测试MySQL数据库”,这里就不进行重复的数据

Appium+python移动自动化测试(三)--demo

写在前面: appium环境搭建好了,Genymotion模拟器也配置ok,接下来就开始写第一个demo 一.获取apk包名 打开cmd,输入指令aapt dump badging D:\test\xxx.apk(APK的全名,如魔漫相机.apk). 如果通过appium获取包名,可能不准确. 包名:com.manboker.headportrait 二.获取launcherActivity 接上一步,再cmd界面查找.魔漫相机的launcherActivity值为com.manboker.he

接口自动化测试(三)

一. 定义公共的请求方法 如下图所示,同一个模块,只是请求数据和返回数据不同,http请求的发送过程是完全相同的 对于不同模块,只是请求的url.请求方法.请求数据和返回数据不同,http请求的过程也是完全相同的 这样就可以将发送请求的方法写成一个类或函数,供不同的测试用例调用 具体的实现是 import requests class MyRequests: def send_request(self, method, url, **kwargs): res = requests.request

Jenkins(三)参数化构建过程

参数化构建是用于和用户提供交互的一种方式,通过选择传入不同的参数,来执行不同的任务,如:选择不同的项目名称并发布到不同的环境.参数化构建是通过Extended Choice Parameter插件来实现和完成的.具体安装配置如下: 1.安装Extended Choice Parameter插件.jenkins--系统管理--插件管理--可选插件--点击安装2.配置相关参数化配置选项3.Extended Choice Parameter插件的相关配置 4.构建执行. 即可查看构建是否完成. 二.通

软件测试(三)—— 参数化测试用例(Nextday.java)

import static org.junit.Assert.*; import java.lang.reflect.Array; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameter