自动化测试(修改)
上一篇 / 下一篇 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")
'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: 自动化功能测试
希望自己天天进步
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | 5 | 6 | ||||
7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
28 | 29 | 30 |
我的存档
数据统计
- 访问量: 66587
- 日志数: 79
- 书签数: 1
- 建立时间: 2010-08-29
- 更新时间: 2013-04-06