第三步,因为测试参数是一个繁杂的过程,有很多种组合方式,而且每个参数输入框都要求输入一遍,但是好在参数输入框的规则都是一样的,比如不能输入符号,字母,负数,小数,空格等等,除此之外还有范围限制,于是我采用数据驱动测试的方法来做这个脚本。先写好输入参数的过程:

Dialog("App(1.0.1.0)").WinEdit("MINS").Set ”1“
Dialog("App(1.0.1.0)").WinEdit("MINX").Set ”1“
Dialog("App(1.0.1.0)").WinEdit("MAXS").Set ”2“
Dialog("App(1.0.1.0)").WinEdit("MAXX").Set ”2“
Dialog("App(1.0.1.0)").WinEdit("IR").Set ”1“
Dialog("App(1.0.1.0)").WinEdit("OR").Set ”2“

  然后根据数据驱动测试的步骤设置参数根据table中的值来输入,详情参见我博客《QTP:数据驱动测试》,Expert View的显示如下:
 

Dialog("App(1.0.1.0)").WinEdit("MINS").Set DataTable("minS", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("MINX").Set DataTable("minX", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("MAXS").Set DataTable("maxS", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("MAXX").Set DataTable("maxX", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("IR").Set DataTable("IR", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("OR").Set DataTable("OR", dtLocalSheet)<br>Dialog("App(1.0.1.0)").WinButton("应用参数").Click    ' 点击开始应用参数
  我设置了2种参数范围边界的数据,9种服务端会拒绝应用的参数组合,30种客户端限制的参数类型组合。
  第四步,对测试结果进行判断并显示在QTP生成的测试报告中:
  开始我是这么写的:
If   Dialog("App(1.0.1.0)").Dialog("提示").Exist(3) Then
Dialog("App(1.0.1.0)").Dialog("提示").WinButton("应用参数成功-确定").Click    ' 应用成功
reporter.ReportEvent micDone,"yes","前2个:可以应用成功"
else
reporter.ReportEvent micFail, "yes"," 前2个:服务端拒绝应用"
End If
If Dialog("App(1.0.1.0)").Dialog("错误").Exist(3) Then
Dialog("App(1.0.1.0)").Dialog("错误").WinButton("服务器不支持该参数-确定").Click
reporter.ReportEvent micDone,"server no","中间9个:服务端拒绝应用"
else
reporter.ReportEvent micFail,"server no", "中间9个:服务端居然应用了"
End If
If  Dialog("App(1.0.1.0)").Dialog("警告").Exist(3) Then
Dialog("App(1.0.1.0)").Dialog("警告").WinButton("客户端不支持该参数-确定").Click
reporter.ReportEvent micDone,"client no","后30个:DTC拒绝应用"
else
reporter.ReportEvent micFail,"client no", "后30个:DTC居然应用了"
End If
  运行之后发现,每一行参数的结果都有2个fail,因为我设置的三个主if是并列关系!符合其中一种情况之后,另外2种情况都会失败。
  于是,我再写成这样的:
If   Dialog("App(1.0.1.0)").Dialog("提示").Exist(3) Then
Dialog("App(1.0.1.0)").Dialog("提示").WinButton("应用参数成功-确定").Click    ' 应用成功
reporter.ReportEvent micDone,"yes","前2个:可以应用成功"
elseif Dialog("App(1.0.1.0)").Dialog("错误").Exist(3) Then
Dialog("App(1.0.1.0)").Dialog("错误").WinButton("服务器不支持该参数-确定").Click
reporter.ReportEvent micDone,"server no","中间9个:服务端拒绝应用"
elseif Dialog("App(1.0.1.0)").Dialog("警告").Exist(3) Then
Dialog("App(1.0.1.0)").Dialog("警告").WinButton("客户端不支持该参数-确定").Click
reporter.ReportEvent micDone,"client no","后30个:客户端拒绝应用"
else
reporter.ReportEvent micFail, "fail"," 结果跟预期不一致"
End If
  现在如果全部测试通过,不会出现fail的情况,但是需要在测试报告中一层层点开,查看对于每个测试数据行的测试结果是不是符合以下描述:
  1.前2个:可以应用成功
  2.中间9个:服务端拒绝应用
  3.后30个:客户端拒绝应用

  虽然上面的脚本避免了重复输入41种数据,但是后期的结果查看还是一个艰辛的过程,不知道QTP有没有把测试人员要求的结果描述统一到一个页面来的功能呢,有待挖掘。