cplusplus

功能测试

上一篇 / 下一篇  2011-06-08 11:18:46 / 个人分类:自动化功能测试

'1.运行主程序
'2.加载测试数据表
'3.加载控件列表
'4.加载控件名注释表
'5.运行测试数据
'5.1运行到第一行测试数据
'5.2检查控件列表中的控件,读取名称
'5.3查询控件名注释表,获取控件,构造脚本
'5.4检查控件列表中的控件,获取操作,构造脚本
'5.5检查控件列表中的控件,获取参数,在测试数据表中加入参数,构造脚本
'5.6执行测试脚本
'第五点反复执行,直到测试数据测试完成

call datatable.AddSheet("testCase")
call datatable.ImportSheet(".\testData.xls","testCase","testCase")
call datatable.AddSheet("controltable")
call datatable.ImportSheet(".\controltable.xls","controlxls","controltable")
call datatable.AddSheet("controlremark")
call datatable.ImportSheet(".\controlremark.xls","controlremarkxls","controlremark")

SystemUtil.Run "E:\QTPTest\autotest\TestPark.exe","","E:\QTPTest\autotest",""

'/*******************************************************************/
'获取父窗口
Dim ParentDir

Function GetParentDir(row, col)
 Dim parent

 'datatable.GetSheet("controlremark").SetCurrentRow(row)
 
 For i = row To 1 Step -1
  datatable.GetSheet("controlremark").SetCurrentRow(i)
  parent = datatable("L" + CStr(col), "controlremark")
  If parent <> "" Then
   ParentDir = datatable("controlType", "controlremark") + "(" +chr(34) +parent + chr(34) + ")" + "." + ParentDir
   'col = col - 1
   If col <= 1 Then
    GetParentDir = ParentDir
    Exit Function '这个怎么好像出问题呢
    i = 0
   Else
    call GetParentDir(i-1,col-1)
    i = 0
   End If
  'else
   'datatable.GetSheet("controlremark").SetCurrentRow(i-1)
  End If
  'if i > 1 Then
   '  datatable.GetSheet("controlremark").SetCurrentRow(i-1)
  'End If
 next
End Function
'/*******************************************************************/

'/*******************************************************************/
'获取参数
Function GetParam(param)
   'datatable.GetSheet("testCase").SetCurrentRow(di)
   GetParam = datatable(cstr(param), "testCase")
End Function
'/*******************************************************************/

'/*******************************************************************/
'获取操作
Function GetOperation(col)
   Dim op
   datatable.GetSheet("controltable").SetCurrentRow(col)
   p=datatable("operation", "controltable") + " " '获取操作的名称,如Set操作
   If datatable("param" + CStr(1), "controltable") <> "" Then '判断参数是否为空,不为空则加入参数
    If datatable("type" + CStr(1), "controltable") = "string" Then '参数是否字符串,第一个参数
   'op = op + chr(34) +datatable("param" + CStr(1), "controltable") + chr(34)
   op = op + chr(34) +GetParam(datatable("param" + CStr(1), "controltable")) + chr(34)
  else
   'op = op +datatable("param" + CStr(1), "controltable")
    p = op +GetParam(datatable("param" + CStr(1), "controltable"))
  end if
 else
  GetOperation = op
  Exit Function
 end if
   For i = 2 to 20 '第二至20个参数.
  If datatable("param" + CStr(i), "controltable") <> "" then
   If datatable("type" + CStr(i), "controltable") = "string" then
    'op = op + chr(34) +datatable("param" + CStr(1), "controltable") + chr(34)
    op = op + chr(34) +GetParam(datatable("param" + CStr(i), "controltable")) + chr(34)
   else
    'op = op +datatable("param" + CStr(1), "controltable")
    op = op +GetParam(datatable("param" + CStr(i), "controltable"))
   end if
  else
   GetOperation = op
   Exit function
  end if
   Next
End Function
'/*******************************************************************/

'/*******************************************************************/
'测试用例执行入口
Sub RunTestCaseEntry(testCaseTable, tControlTable, tControlRemark)
 Dim dataCount
 Dim controlCount
 Dim remarkCount
 Dim ExecStr
 
 dataCount=datatable.GetSheet(testCaseTable).GetRowCount() '用例表
 controlCount=datatable.GetSheet(tControlTable).GetRowCount() '控件名称表
 remarkCount=datatable.GetSheet(tControlRemark).GetRowCount() '控件注释,根据名称找到ID
 
 datatable.GetSheet(testCaseTable).SetCurrentRow(1)
 datatable.GetSheet(tControlTable).SetCurrentRow(1)
 datatable.GetSheet(tControlRemark).SetCurrentRow(1)
 
 Dim di
 Dim ci
 Dim ri
 
 For di = 1 to dataCount '用例表循环
 
  If  datatable("Execute", testCaseTable) = "1" or datatable("Execute", testCaseTable) = 1 Then '用例是否执行
  For ci = 1 to controlCount '控件名称表循环
  
   Dim conName
   Dim getConName
   If datatable("exec", tControlTable) = "1"  Then '是否对控件进行操作
    conName = datatable("name", tControlTable) '获取控件名称
    
    For ri = 1 to remarkCount '根据控件表名称查找注释表控件名称,注释表循环
     datatable.GetSheet(tControlRemark).SetCurrentRow(ri)
     getConName = datatable("name", tControlRemark)
     If getConName = conName Then '控件表和控件注释表名称是否相同
      Dim ccol
      Dim idcol
      
      For ccol = 1 To 20 '注释表中查找控件ID循环
       If datatable("L" + CStr(ccol), tControlRemark) <> "" Then
        ExecStr = datatable("L" + CStr(ccol), tControlRemark)
        idcol = ccol
        ccol = 21
       End If
      Next
      
      'ExecStr = conName
      If ri = 1 Then
       ri = remarkCount '退出for循环
      Else
       ParentDir  = ""
       'ExecStr = ""
       'ExecStr = GetParentDir(ri, idcol) + "." + datatable("controlType", tControlRemark) + "(" + ExecStr + ")" '获取父节点
       call GetParentDir(ri, idcol) '获取控件的父窗口,存入变量ParentDir中
      End If
      '获取操作 
      ExecStr = ParentDir + GetOperation(ci)'
      'ExecStr = ExecStr + GetOperation(ci)
      'ExecStr = "Dialog("+chr(34)+"testPark"+chr(34)+").WinEdit("+chr(34)+"进场时间"+chr(34)+").Set " + chr(34) + "2010-02-02 15:30:00"+ chr(34)
      'ExecStr = "Dialog("+"testPark"+").WinEdit("+"进场时间"+").Set " + "2010-02-02 15:30:00"
      Execute ExecStr
      wait 0, 100
      ri = remarkCount '退出for循环
     End If
     datatable.GetSheet(tControlRemark).SetNextRow()
    Next
    
   else
    'datatable.GetSheet(tControlTable).SetNextRow()
   End If
   datatable.GetSheet(tControlTable).SetNextRow()
  Next
  'Dialog("testPark").WinButton("确定").Click
  'wait 10
  end if
  datatable.GetSheet(testCaseTable).SetNextRow()
 Next
End Sub
'/*******************************************************************/

Sub TestCaseManage() '用例管理
 Call RunTestCaseEntry("testCase", "controltable", "controlremark")
End Sub

Sub TestModelManage() '模块管理
 Call TestCaseManage()
End Sub

Call TestModelManage()


TAG: 功能测试

 

评分:0

我来说两句

Open Toolbar