QTP的应用及检查点

上一篇 / 下一篇  2009-09-05 16:22:15

组在QTP脚本中的应用及添加检查点
2008年12月25日 星期四 09:14

''''''''''''××××××数组在QTP脚本中的应用,以及QTP手动添加检查点(一)××××××××
'这里设计的用例是为了检测报错信息是否正确。而不是验证登录功能是否正确:p   
'文章目的:
'1 对QTP中数组应用做初步认识。
'2 对手工检查点的创建做初步了解。
'文章中用到的软件:
'QTP自带售票系统
Dim shuzu(4,2),i
''定义一个数组,数组的第一个值由用例数量决定,这里的4代表5个用例,数组是从0开始计算的,数组的第二''个数由输入的条件以及预计结果构成。
''这里是登录为例子我们需要输入用户名,密码,并得到一个预期的结果。我们有至少5种组合——
''用户名正确,密码错误。相关报错信息。
''用户名错误,密码正确。相关报错信息。
''用户名为空,密码正确。相关报错信息。
''用户名正确,密码为空。相关报错信息。
''用户名为空,密码为空。相关报错信息。
''那么我们至少有5个类似于上面的用例。
shuzu(0,0)="admin"
shuzu(0,1)="testpsd"
shuzu(0,2)="Incorrect password. Please try again"

shuzu(1,0)="asd"
shuzu(1,1)="mercury"
shuzu(1,2)="Agent name must be at least 4 characters long."

shuzu(2,0)=""
shuzu(2,1)="mercury"
shuzu(2,2)="Please enter agent name"

shuzu(3,0)="admin"
shuzu(3,1)=""
shuzu(3,2)="Please enter password"

shuzu(4,0)=""
shuzu(4,1)=""
shuzu(4,2)="Please enter agent name"


''数组定义以后,我们该如何用数组呢?,我们在下面的脚本里可以看到用户名和密码的输入情况。QTP录制下''来的只是其中的一种情况,那么我们需要把我们设计的值带进数组中,
''使数组成为我们的变量。
'Dialog("Login").WinEdit("Agent Name:").Set "admin"
'Dialog("Login").WinEdit("Password:").SetSecure '"4937d9c2197caa5bdca7fc5915687fffbdbd5d12"
'Dialog("Login").WinButton("OK").Click
'Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
''修改上面的代码 ,其中的用户名admin 是我们数组中的第一个元素 也就是(0,0)(1,0)(2,0)(3,0)(4,0)
''我们可以看出来数组的第二个元素是相对不会发生变化的,那么我们只需要给发生变化的部分定义一个变量就可以实现用户名按照我们需要的来更换。
''这是我们到代码的开始部分 定义一个变量 i ,因为用例之间元素的位置是相同,所以变量 i ,可以重复的用,
''我们现在把密码变成 shuzu(i,1)
'
'Dialog("Login").WinEdit("Agent Name:").Set shuzu(i,0)
'Dialog("Login").WinEdit("Password:").SetSecure shuzu(i,1)
'Dialog("Login").WinButton("OK").Click
'Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
'
''现在对于我们来说,用户名和密码不再是单纯的一个定值了,他可以实现按照我们规定的内容来回改变并且回''放。
''可是 看上去是不是少了什么。。。??没错那就是循环!我们有了数组,但是没有循环的话,程序是不知道我们需要如何运行脚本。
''那么我们开始给代码加入循环,
''QTP中加入循环可以直接写for 语句 也可以通过 Insert 标签选择for 语句来添加。由于俺是比较懒d 所''以还是选择 insert 标签好了。
''操作步骤————Insert—— loop statement——for...next
''插入for语句 之后 做一些说明,刚插入的语句格式是这样的——
''For Iterator = 1 To 1 Step 1
''next
''其中   Iterator 就是我们定义的变量 ,第一个数字1 就是我们变量的 起始数值。因为我们在这里是给''数组的第一个元素 定义变量所以我们从 0这个数字开始以4 这个数字结束。
''setp 的意思是“步进”,例如我们定义的起始数值是0 ,setp 是1 ,那么在运行完第一次之后就会运行''0+1,也就是我们的第二个用例,
''如果我们是setp2 那么就会运行第0+2,也就是第三个个用例。
''还有一定要注意的就是next 一定要放在循环体的最后面,以它结尾,不然我们的循环体会出现问题。
''现在我们将代码改成下面这样 ,再来运行试试看
'For i = 0 To 4 Step 1
'
'Dialog("Login").WinEdit("Agent Name:").Set shuzu(i,0)
'Dialog("Login").WinEdit("Password:").SetSecure shuzu(i,1)
'Dialog("Login").WinButton("OK").Click
'Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
'
'Next
''运行完毕之后是不是感觉很有成就感?
''因为脚本确实如我们所愿的运行了4次,但是问题又来了。。。。
''我们要比较的结果呢?什么是对的呢?什么是错的呢?我们的第三个元素还没用呢!?
''呵呵 不着急 我们马上把第三个元素用起来!
''那就是————手工插入检查点!

''分析我们的业务,来确定检查点插入的位置
''我们的提示信息是在什么时候出现的?是在我们输入完用户名,密码并且点击确定之后才会出现。
''那么ok我们检查点的位置确定了,就是在点击确定之后。语句中就是 ''Dialog("Login").WinButton("OK").Click 这一句的后面。
''现在开始做。
''第一步打开我们的飞机订票系统登录界面,随便输入用户名,不填写密码,使其弹出错误对话框。
''第二部点击Object Repository——Add Objects to local 获取检查点的对象,并添加到对象库。
''要注意被获取的对象必须是最小化QTP后就能看到的对象。

小窍门,添加之前可以用alt+tab 来确定一'''''下,如果下一个移动到的目标就是被测目标那么就ok了
''在获取后我们可以看到很详细的信息,接下来我们需要开始手动写入检查点
'
'For i = 0 To 4 Step 1
'
'Dialog("Login").WinEdit("Agent Name:").Set shuzu(i,0)
'Dialog("Login").WinEdit("Password:").SetSecure shuzu(i,1)
'Dialog("Login").WinButton("OK").Click
'
'dialog("Login").Dialog("Flight Reservations").Static("Please enter ''password").GetROProperty("text")'抓取对象后直接输入dialog加"("就会自动出现后面的内容
'
'
'Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
'
'Next

'现在我们可以看到又多了一行代码,这行代码的意思和意义是什么呢?
'我们来看代码的组成
'dialog("Login").Dialog("Flight Reservations").Static("Please enter 'password").GetROProperty("text")
'现在打开OR,来查看一下我们刚才截取的对象
'仔细查看TO里的目录结构,会发现抓取的内容所在的树状目录是这样的
''login——flight reservation——please enter password
'对照代码我们很快就明白了原来引号的部分就是我们的目录顺序。那dialog和static又是什么呢?
'我们再次打开or,这是默认的是选中第一行信息,这里来说选中的是login。
'注意右侧的 Class,是不是与我们代码中的一致呢?!嘿嘿 肯定是一样的啦。
'把上面的代码可以“翻译”成这样 ——————
'dialog类的("Login").下的 Dialog类的("Flight Reservations")下的.Static类的("Please ''enter password").
'GetROProperty("tsxt") 的意思则是我们将取出 Static类的("Please enter password")的 text属''性,放置到我们的RO中。
'现在我们只是取出来我们要用的属性和属性的值 那么怎么去比较呢?
'继续看下面的代码let‘s goon
'
'For i = 0 To 4 Step 1
'
'Dialog("Login").WinEdit("Agent Name:").Set shuzu(i,0)
'Dialog("Login").WinEdit("Password:").SetSecure shuzu(i,1)
'Dialog("Login").WinButton("OK").Click
'
'shijishuchu=dialog("Login").Dialog("Flight Reservations").Static("Please enter ''password").GetROProperty("text")
'yujishuchu=shuzu(i,2)
'
'Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
'
'Next
'这一步就非常简单了,意义一看就明白了。就是我们把取出来的test 赋值给变量 shijishuchu,我们数组''的预计输出shuzu(i,2)赋值给变量yujishuchu
'这时我们有了两个变量,接下来的工作就是开始比较他们,已达到我们测试的目的

For i = 0 To 4 Step 1

Dialog("Login").WinEdit("Agent Name:").Set shuzu(i,0)
Dialog("Login").WinEdit("Password:").SetSecure shuzu(i,1)
Dialog("Login").WinButton("OK").Click

shijishuchu = Dialog("Login").Dialog("Flight Reservations").Static("Incorrect password. Please").GetROProperty("text")
yujishuchu = shuzu(i,2)

If shijishuchu=yujishuchu Then
   Reporter.ReportEvent micPass,"结果比较","实际输出:"&shijishuchu&",预计输出:"&yujishuchu
else
Reporter.ReportEvent micFail,"结果比较","实际输出:"&shijishuchu&",预计输出:"&yujishuchu
End If

Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click

Next
'运行上面的代码,hoho,成功了吧?
'我们顺利的对测试点做了检查,并且比较了结果。
'不过,不能高兴的太早咯,为啥呢?
'因为这一段代码的复用性一点也不好哟。如果我们的需求有变化,那岂不是每次都要对代码做手术 - -b
'因为我们的预计输出是直接写死在脚本中,这样的脚本在实际的运用中是不合理的。
'而且我们的脚本没有去考虑,如果输入了正确的帐号和密码应该怎么办。
'呵呵 饭要一口一口的吃知识也要一点一点的学。
'我们在下一篇文章里,再次对我们代码进行下一步的优化和改革:P
'ps:文章是在qtp中直接写的所以大部分句子的前面都带有单引号(单引号是QTP中的注释),没有单引号的''部分是可以直接运行的最终代码。另外由于博客输入框大小的限制上文中有些地方是不应该换行的,不过不会''影响正常阅读,所以不做提示了。。。。
''重新编辑了一下 把可以运行的代码变成了红色字体,增加了一点点可读性


TAG:

 

评分:0

我来说两句

Open Toolbar