QTP(12)

练习:录制两位数加法器加法计算后退出的步骤,对两个加数做随机数参数化,随机数范围是0-50,在计算后获得被测系统计算的结果,判断如果结果等于100,msgbox提示“满分”,如果结果在80和99之间,msgbox提示“优秀”,
  如果结果在70和79之间,msgbox提示“良好”,
  如果结果在60和69之间,msgbox提示“及格”,
  如果结果60以下,msgbox提示“不及格”
Test12001_两位数加法器_分支

VbWindow("Form1").VbEdit("Text1").Set cstr(RandomNumber(0,50))
VbWindow("Form1").VbEdit("Text2").Set cstr(RandomNumber(0,50))
VbWindow("Form1").VbButton("计算(J)").Click
'计算后获得被测系统计算的结果
Dim result
result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
result=cint(result)
print result
'判断结果范围
If result=100 Then
	msgbox "满分"
Elseif result>=80 and result<=99 Then
	msgbox "优秀"
Elseif result>=70 and result<=79 Then
	msgbox "良好"
Elseif result>=60 and result<=69 Then
	msgbox "及格"
Else
	msgbox "不及格"
End If
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

练习:Flight,通过For循环实现登录-打开1、3、5、7、9号订单-退出
Test12002_Flight_For

Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a614c6c4f3179d8983437601de7cb4b02c0e2ad"
Dialog("Login").WinButton("OK").Click
Dim i
For i=1 to 9 step 2
	Window("Flight Reservation").WinButton("Button").Click
	Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
	Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set i
	Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Next
Window("Flight Reservation").Close

练习:两位数加法器,录制加法计算、再重置、退出的步骤,使用For循环来实现最多10次随机数加法,在循环过程中,如果计算结果大于50,就不再继续循环。
Test12003_两位数加法器_For

Dim i,result
For i=1 to 10
	VbWindow("Form1").VbEdit("Text1").Set RandomNumber(-99,99)
	VbWindow("Form1").VbEdit("Text2").Set RandomNumber(-99,99)
	VbWindow("Form1").VbButton("计算(J)").Click
	'获得计算结果
	result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
	print result
	'判断结果如果大于50
	If cint(result)>50 Then
		'就强制退出循环
		Exit For
	End If	
	VbWindow("Form1").VbButton("重置(C)").Click
Next
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

一、循环结构
  1、For循环
  2、While循环
    (1)作用:实现次数不固定、条件固定的循环
    (2)语法:
      While 条件表达式
        循环体
      WEnd
    (3)功能:只要每次判断条件表达式时,取值为True,就会执行循环体,取值为False,就退出循环。
    (4)说明&注意:
      a.While和WEnd配对出现
      b.在While前,准备好条件表达式中第一次判断使用的数据。
      c.执行完循环体后,While循环不会给任何变量自动增加数值
      d.最少执行0次循环体

        练习:书写代码实现以下猜数小游戏:
          a.生成一个随机数,存储在一个变量中(随机数范围:1到10)
          b.循环通过Inputbox通知用户输入猜测的数值,并且判断用户猜测的数值跟a步骤的数值的大小关系
          c.如果猜测的数值不等于a步骤的数值,就执行循环
          d.如果猜测的数值大于a步骤的数值,就提示“猜大了,继续猜”
          e.如果猜测的数值小于a步骤的数值,就提示“猜小了,继续猜”
        Test12004_While_猜数

'练习:书写代码实现以下猜数小游戏:
'	a.生成一个随机数,存储在一个变量
'中(随机数范围:1到10)
'	b.循环通过Inputbox通知用户输入猜
'测的数值,并且判断用户猜测的数值跟a步骤
'的数值的大小关系
'	c.如果猜测的数值不等于a步骤的数值
',就执行循环
'	d.如果猜测的数值大于a步骤的数值
',就提示“猜大了,继续猜”
'	e.如果猜测的数值小于a步骤的数值
',就提示“猜小了,继续猜”

Dim n1,n2'n1是生成的随机数,n2就是用户猜测的数字
n1=RandomNumber(1,10)
n2=0
While n1<>n2
	n2=cint(Inputbox("请猜1到10之间的数:"))
	If n2>n1 Then
		msgbox "猜大了,继续猜"
	Elseif n2<n1 Then
		msgbox "猜小了,继续猜"
	End If
Wend
msgbox "恭喜,猜中了,随机数就是"&n1

        练习:两位数加法器,录制加法计算、再重置、退出的步骤,使用While循环来实现无限次随机数加法,在循环过程中,如果计算结果大于50,就不再继续循环。
        注意:条件是小于或等于50,不是大于50
        Test12005_两位数加法器_While

Dim result
result=0
While cint(result)<=50
	VbWindow("Form1").VbEdit("Text1").Set RandomNumber(-99,99)
	VbWindow("Form1").VbEdit("Text2").Set RandomNumber(-99,99)
	VbWindow("Form1").VbButton("计算(J)").Click
	'获得计算结果
	result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
	print result
	VbWindow("Form1").VbButton("重置(C)").Click
Wend
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

        练习:Flight,录制登录-打开1号订单-退出的步骤,通过While循环修改代码实现从1号开始打开订单,每次订单号加1,某次打开的订单总金额(Total)的值等于“$337.40”时不再继续打开后续订单,使用msgbox输出该订单的顾客姓名。
        注意:循环条件是总金额不等于"$337.40"
        提示:定义两个变量,一个存储订单号,一个存储总金额
        Test12006_Flight_While

Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a618a3c421460a3a2594f75a1ad2d74207e422b"
Dialog("Login").WinButton("OK").Click
Dim num,total'订单号,总金额
num=1
total=""
While total<>"$337.40"
	Window("Flight Reservation").WinButton("Button").Click
	Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
	Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set cstr(num)
	Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
	'获得num号订单的总金额
	total=Window("Flight Reservation").WinEdit("Total:").GetROProperty("text")
	'每次订单号加1
	num=num+1
	print total
	print num
Wend
'输出顾客姓名
msgbox Window("Flight Reservation").WinEdit("Name:").GetROProperty("text")
Window("Flight Reservation").Close

        Test12007_VBS循环_While

'练习:1+2+3+4+5+……,不论执行多少次,
'只要结果小于20就继续做加法,
'如果结果大于或等于20时,就停止
'Dim i,sum
'sum=0
'i=1'循环前,给循环中使用到的变量赋初始值
'While sum<20'执行循环体的条件
'	sum=sum+i'循环体的主体
'	i=i+1'变量自增出现在循环体中
'Wend
'print sum'1+2+3+4+5+6=21
'

'练习:2+4+6+……,不论执行多少次,
'只要结果小于40就继续做加法,
'如果结果大于或等于40时,就停止
'Dim i,sum
'i=2
'sum=0
'While sum<40
'	sum=sum+i
'	i=i+2
'Wend
'print sum'2+4+6+8+10+12=42

Dim i,sum
i=0
sum=0
While sum<40
	i=i+2
	sum=sum+i
Wend
print sum'2+4+6+8+10+12=42

        例:
          Dim i,sum
          i=0
          sum=0
          While sum<40
            i=i+2
            sum=sum+i
          Wend
          print sum'2+4+6+8+10+12=42

  3.DoLoop循环---了解
    (1)作用:实现次数不固定、条件固定的循环,语法比While循环灵活,功能更强大。
    (2)语法参照:Test12008_VBS_DoLoop

'For i=1 to 3
'	print i
'Next
'
'i=1
'While i<=3
'	print i
'	i=i+1
'Wend

'Dim i,sum
'i=1
'sum=100
'Do While sum<20
'	sum=sum+i
'	i=i+1
'Loop
'print sum
'功能:先判断条件,如果成立,就执行循环体
'不成立时,就退出

'Dim i,sum
'i=1
'sum=100
'Do
'	sum=sum+i
'	i=i+1
'Loop While sum<20
'print sum
'功能:先执行一次循环体,再判断条件,如果成立,就执行循环体
'不成立时,就退出


'Dim i,sum
'i=1
'sum=100
'Do Until sum>=20
'	sum=sum+i
'	i=i+1
'Loop
'print sum
'功能:先判断条件,如果成立,就退出
'不成立时,就执行循环体

'Dim i,sum
'i=1
'sum=100
'Do
'	sum=sum+i
'	i=i+1
'Loop Until sum>=20
'print sum
'功能:先执行一次循环体,再判断条件,如果成立,就退出
'不成立时,就执行循环体

'Dim i,sum
'i=1
'sum=100
'Do
'	sum=sum+i
'	If sum>20 Then
'		Exit Do'强制退出DoLoop循环
'	End If
'	i=i+1
'Loop
'print sum


Dim i,sum
i=1
sum=100
Do
	If sum>20 Then
		Exit Do'强制退出DoLoop循环
	End If
	sum=sum+i
	i=i+1
Loop
print sum

    (3)总结:
      a.Do和Loop之间是循环体
      b.While或Until条件可以写在Do后,也可以写在Loop后
        如果条件写在Do后,会先判断条件,再考虑是否执行循环体
        如果条件写在Loop后,会先执行一次循环体,再判断条件是否成立
      c.While后的条件成立时,会执行循环体,Until后的条件成立时,会直接退出循环。
      d.Exit Do语句可以位于循环体内部,一旦执行到此行,就强制退出DoLoop循环。

       

二、自定义检查点
  1.作用:用于实现QTP内置的检查点无法实现的复杂的检查。


  2.自定义检查点就是自己书写代码实现检查。


  3.实现步骤:
    (1)分析待检查的业务
    (2)将检查成功的条件描述成为一个条件表达式---最重要的步骤!!
    (3)使用If分支结构,判断条件表达式,生成两个分支
    (4)在条件成立的分支中,向测试结果报告中记录检查成功的结果,在条件不成立的分支中,向测试结果报告中记录检查失败的结果。


  4.记录结果的语法:
    reporter.ReportEvent 状态,"步骤名称","详细描述"
    例:
      '记录成功的结果
        'reporter.ReportEvent micPass,"检查计算结果","计算正确"
      '记录失败的结果
        reporter.ReportEvent micFail,"检查计算结果","计算错误,预期值是100,实际值是30"

    练习:两位数加法器,做随机数加法后,检查计算结果是否正确,最后退出
    分析:条件表达式
      预期结果=实际结果
      其中预期结果是对两个加数文本框获得数据后使用加号做加法运算后的结果,实际结果是从被测系统的结果文本框中获得的数据。
    Test12009_两位数加法器_自定义检查点

Dim n1,n2
n1=RandomNumber(-99,99)
n2=RandomNumber(-99,99)
VbWindow("Form1").VbEdit("Text1").Set n1
VbWindow("Form1").VbEdit("Text2").Set n2
VbWindow("Form1").VbButton("计算(J)").Click
'自定义检查点,检查结果是否正确
Dim e,a'预期结果、实际结果
e=n1+n2'两个加数加法运算
a=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
print e
print a
If cint(e)=cint(a) Then
	reporter.ReportEvent micPass,"检查计算结果","计算正确"
Else
	reporter.ReportEvent micFail,"检查计算结果","计算错误,预期值是"&e&",实际值是"&a
End If
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

    练习:Flight,登录-连续订票2次-退出,检查第二次订票的订单号比第一次订票的订单号多1
    提示:订票后先等待10秒再获得订单号
    Test12010_Flight_订单号多1_自定义检查点

Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a61b055b6ccf4ad8b0cd50f6b7a2ed8c24a3cae"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select "London"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Los Angeles"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "19178   LON   12:48 PM   LAX   01:33 PM   AA     $104.40"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "dddd"
Window("Flight Reservation").WinButton("Insert Order").Click
wait 10
Dim n1
n1=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
print n1
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111118"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
Window("Flight Reservation").WinComboBox("Fly To:").Select "London"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "13580   FRA   03:12 PM   LON   03:57 PM   SR     $160.40"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "eeee"
Window("Flight Reservation").WinButton("Insert Order").Click
wait 10
Dim n2
n2=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
print n2
Window("Flight Reservation").Close
'检查第二个订单号比第一个订单号多1
If cint(n2)=cint(n1)+1 Then
	reporter.ReportEvent micPass,"检查订单号","第二个订单号比第一个订单号多1"
Else
	reporter.ReportEvent micFail,"检查订单号","第二个订单号"&n2&"不比第一个订单号"&n1&"多1"
End If

    Test12011_Flight_订单号多1_自定义检查点

Dialog("Login").WinEdit("Agent Name:").Set "1023"
Dialog("Login").WinEdit("Password:").SetSecure "5a61bf03f681b795b3d62fdda1c9cda63d154c92"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Dim num'订单号
num=cstr(RandomNumber(1000,2000))
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set num
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
'自定义检查点
Dim e,a'预期提示、实际提示
e="Order number "&num&" does not exist"
a=Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").Static("提示").GetROProperty("text")
print e
print a
If e=a Then
	reporter.ReportEvent micPass,"检查提示","提示内容正确"
Else
	reporter.ReportEvent micFail,"检查提示","提示内容错误"
End If
Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").WinButton("确定").Click
Window("Flight Reservation").Dialog("Open Order").WinButton("Cancel").Click
Window("Flight Reservation").Close

    练习:Flight,登录-打开1000到2000随机编号的订单-点击“确定”-点击“取消”-退出,在点击“确定”前,检查提示信息显示正确
    提示:条件表达式
      预期提示=实际提示
      其中预期提示应该通过字符串拼接生成,实际提示从被测系统的Static对象获得text属性值。
      "Order number "&num&" does not exist"
      Order number 1080 does not exist
      Order number 1879 does not exist
    Test12012_Flight_提示_自定义检查点

    Dim e,a'预期提示、实际提示
    e="Order number "&num&" does not exist"
    a=Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").Static("提示").GetROProperty("text")
    print e
    print a
    If e=a Then
      reporter.ReportEvent micPass,"检查提示","提示内容正确"
    Else
      reporter.ReportEvent micFail,"检查提示","提示内容错误"
    End If

原文地址:https://www.cnblogs.com/KalosOwen/p/8810651.html