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

系统 2784 0

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参数化


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】元

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论