51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1746|回复: 3
打印 上一主题 下一主题

[原创] 执行很慢,怎么解决

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-6-25 08:24:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要测试的软件中,有一个步骤是输出了一个表,由于QTP不能识别软件中的表插件,所以我就把结果到处到Excel表中,然后写了一个函数来对Excel表中的数据遍历,检查。我单独使用函数来check表的时候,要比在QTP上快很多,这个该如何解决??
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-6-25 08:50:18 | 只看该作者
估计是QTP没配置好。Tools->Options->Run,里面确保选中的是"Fast"选项
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-6-25 10:03:39 | 只看该作者
估计是QTP没配置好。Tools->Options->Run,里面确保选中的是"Fast"选项,是单步骤的执行速度,而且,建议不要使用.会有很多的错误出现.
你的问题,我不理解.你是说,输出excel的时候输出慢,还是比较慢.你如何比较的?代码拿出来.看看
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-6-25 12:17:10 | 只看该作者

回复 3# 的帖子

Function check(FilePatch)
Dim xlsDoc,chk_colnum,chk_rownum,chk_tmpStr,numFlag,charFlag,emptFlag,flag
Set xlsDoc = CreateObject("Excel.Application")
xlsDoc.Workbooks.Open(FilePatch)
xlsDoc.Worksheets(1).Activate
'检查列数
chk_colnum = 1
chk_tmpStr = xlsDoc.Cells(2,chk_colnum).value
While not IsEmpty(chk_tmpStr)
  chk_colnum = chk_colnum+1
  chk_tmpStr = xlsDoc.Cells(2,chk_colnum).value
Wend
'检查行数
chk_rownum = 1
chk_tmpStr = xlsDoc.Cells(chk_rownum,1).value
While not IsEmpty(chk_tmpStr)
  chk_rownum = chk_rownum+1
  chk_tmpStr = xlsDoc.Cells(chk_rownum,1).value
Wend
chk_rownum = chk_rownum -1
chk_colnum = chk_colnum-1
For chk_i=2 To chk_colnum
  chk_j = 3
  emptFlag = False
  numFlag = False
  numcombFlag = False
  chinaflag = False
  flag =False
  While (numFlag And chinaflag)<>True And (numFlag And numcombFlag)<>True And (numcombFlag And chinaflag)<>True And  chk_j<chk_rownum  
     chk_tmpStr = xlsDoc.Cells(chk_j,chk_i).Value
     If StrComp(chk_tmpStr,"") Then
        emptFlag = True
        If IsNumeric(chk_tmpStr) Then
           numFlag = True
        ElseIf isNumComb(chk_tmpStr) Then
           numCombFlag = True
        ElseIf ischina(chk_tmpStr) Then
           chinaflag = True
        ElseIf not StrComp(chk_tmpStr,"-") Then
           flag = True
        End If
     End If     
     chk_j = chk_j+1         
  Wend
  If numFlag And chinaflag Then
     'MsgBox        "1数据异常"&xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据异常,可能存在没有翻译的值,请确认",,""
     Reporter.ReportEvent micFail,"数据异常",xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据异常,可能存在没有翻译的值,请确认"
  ElseIf numFlag And numcombFlag Then
     'MsgBox        "2数据异常"&xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据异常,可能存在没有翻译的值,请确认",,""
     Reporter.ReportEvent micFail,"数据异常",xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据异常,可能存在取值错误,请确认"
  ElseIf Not emptFlag  Then
     Reporter.ReportEvent micFail,"数据异常",xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据全部为空,请确认"
     'MsgBox        "3数据异常"&xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据异常,可能存在没有翻译的值,请确认",,""
  ElseIf (Not numFlag) And (Not numcombFlag) And (Not chinaflag) And flag Then
     Reporter.ReportEvent micFail,"数据异常",xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段的值都为-,请确认"
     'MsgBox        "5数据异常"&xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据异常,可能存在没有翻译的值,请确认",,""
  ElseIf numcombFlag And chinaflag Then
     Reporter.ReportEvent micFail,"数据异常",xlsDoc.Cells(1,1)&"---"&xlsDoc.Cells(2,chk_i)&"---该字段数据异常,可能存在没有翻译的值,请确认"
     
  End If
Next
xlsDoc.Quit
Set xlsDoc = Nothing
End Function


Function isNumComb(str)
Dim regEx,tmpflag
tmpflag = False
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Pattern = "^[0-9|a-f]{0,2}-[0-9|a-f]{0,2}-[0-9|a-f]{0,2}$"
tmpflag = regEx.Test(str)
If Not tmpflag Then
   regEx.Pattern = "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"
   tmpflag = regEx.Test(str)
End If
isNumComb = tmpflag
End Function


Function ischina(str)
Dim regEx,tmpflag,regEx1
tmpflag = False
Set regEx = New RegExp
regEx.IgnoreCase = True
Set regEx1 =New RegExp
regEx1.Pattern ="[\u3400-\u9FFF]"
regEx.Pattern = "[a-z]"
china_k=1
char = Mid(str,china_k,1)
While regEx.Test(char)<>True  And  regEx1.Test(char)<>True And china_k<Len(str)
   china_k = china_k+1
Wend
If regEx.Test(char)<>True And regEx1.Test(char)<>True Then
   ischina = False
Else  
   ischina = True
End If
End Function

Function splitSpace(strMen)
strMen = Trim(strMen)
loca = InStrRev(strMen," ")
While loca<>0
strMen = Left(strMen,loca-1)&Right(strMen,Len(strMen)-loca)
loca = InStrRev(strMen," ")
Wend
splitSpace = strMen
End Function
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 13:57 , Processed in 0.072060 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表