cplusplus

自动化测试(修改)

上一篇 / 下一篇  2011-06-13 16:58:28 / 个人分类:自动化功能测试

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

Dim qtTest
Set qtTest = CreateObject("QuickTest.Application")

'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)
            p = op + chr(34) +GetParam(datatable("param" + CStr(1), "controltable")) + chr(34)
        else
            'op = op +datatable("param" + CStr(1), "controltable")
             op = 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)
                p = op + chr(34) +GetParam(datatable("param" + CStr(i), "controltable")) + chr(34)
            else
                'op = op +datatable("param" + CStr(1), "controltable")
                p = 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(featable)    '用例管理
    Dim count
    count = datatable.GetSheet(featable).GetRowCount()
    'datatable.AddSheet("testCase")
    datatable.AddSheet("controltable")
    datatable.AddSheet("controlremark")
    Dim testCase
    Dim controltable
    Dim controlremark
    Dim testCaseFile
    Dim controltableFile
    Dim controlremarkFile
   
    Dim ExportXls
    Dim ExportSheet
   
    For i = 0 To count    '在用例表中循环
        If datatable("exec", featable) = "1" Then
           testCaseFile = datatable("casexlsname", featable)
            controltable = datatable("controlsheetname", featable)

            controlremark = datatable("remarksheetname", featable)
            controltableFile = datatable("controlxlsname", featable)
            controlremarkFile = datatable("remarkxlsname", featable)

            ExportXls = datatable("resultfile", featable)
            ExportSheet = datatable("resultsheet", featable)

             testCase = datatable("casename", featable)
            datatable.AddSheet(testCase)    '这个放前面会出错

            wait 1
           
            Call datatable.ImportSheet(testCaseFile, testCase, "testCase")
            Call datatable.ImportSheet(controltableFile, controltable, "controltable")
            Call datatable.ImportSheet(controlremarkFile, controlremark, "controlremark")
            Call RunTestCaseEntry("testCase", "controltable", "controlremark")
            'datatable.GetSheet("testCase").Export("filerlt.xls", "sheet")
            'datatable.Delete("testCase")
            'datatable.GetSheet(testCase).ExportSheet(ExportXls, ExportSheet)
            call datatable.ExportSheet(ExportXls, testCase)
            call datatable.Delete(testCase)
        End If
        datatable.GetSheet(featable).SetNextRow()
    Next
    'Call RunTestCaseEntry("testCase", "controltable", "controlremark")
End Sub

Sub TestModelManage(mmfile, mmxls)    '模块管理
    Call datatable.AddSheet("featuresmanage")
    Call datatable.ImportSheet(mmfile, mmxls, "featuresmanage")
   
    Dim featurecount
    Dim featable
    Dim feafile
   
    featurecount = datatable.GetSheet("featuresmanage").GetRowCount()
    For i = 1 To featurecount    '在用例管理表中循环
        If datatable("exec", "featuresmanage") = "1" Then
            'featable = datatable("featuresname", "featuressheet")    '模块管理表
            'feafile = datatable("featuresname", "featuresfile")        '模块管理所在文件
            featable = datatable("featuressheet", "featuresmanage")    '模块管理表
            feafile = datatable("featuresfile", "featuresmanage")        '模块管理所在文件
            datatable.AddSheet(featable)
            Call datatable.ImportSheet(feafile, featable, featable)
            Call TestCaseManage(featable)
            call datatable.Delete( featable)
        End If
        datatable.GetSheet("featuresmanage").SetNextRow()
    Next
End Sub

Call TestModelManage("featuresmanage.xls", "FeaturesMgr")

TAG: 自动化功能测试

 

评分:0

我来说两句

Open Toolbar