51Testing软件测试论坛

标题: 关于自定义函数的问题 [打印本页]

作者: zhangchaoy    时间: 2012-5-21 17:06
标题: 关于自定义函数的问题
Function SelectRegExp(Obj,Patrn)
   Dim NumOfItems,i,CurrentValue,regEx,ItemToSelect,oldFilter
   '初始化正则表达式
   Set regEx=new RegExp
   regEx.pattern=patrn
   regEx.Ignorecase=false  '区分大小写
   oldfilter=Reporter.Filter       '保存默认值
   Reporter.Filter=2 '仅发送错误
   ItemToSelect=-1
   '获取测试对象的 NumOfItems属性
   NumOfItems=Obj.getroproperty("items count")
    For i=0 to NumOfItems-1
    CurrentValue=Obj.GetItem(i)
            If regEx.test(CurrentValue)Then
             If (ItemToselect<>-1) Then
   SelectRegExp=-1    '表示匹配项不唯一
   Reporter.Filter=oldFilter
   Exit function
     End If
     ItemToSelect=i
    End If

   Next
   Reporter.Filter=oldFilter    '重置默认设置
   '做出选择动作
   If (ItemToSelect>=0) Then
  SelectRegExp=Obj.Select(ItemToSelect)
  else
  SelectRegExp=-1
   End If
End Function
我不太明白下面这一段
If regEx.test(CurrentValue)Then
If (ItemToselect<>-1) Then
SelectRegExp=-1    '表示匹配项不唯一
为什么当regEX.test为真,当ItemToSelect <> -1时,就要SelectRegExp=-1。
请帮忙解释一下。还有就是ItemToselect<>-1时,是说明要选择的记录在list中出现了吗
谢谢
作者: lifreshman0626    时间: 2012-5-22 08:57
这个函数的返回值分为选择成功,和失败,其中失败的返回值为-1;失败又分两种情况,SelectRegExp=-1    '表示匹配项不唯一,这里表示select里面存在重复项;后面的SelectRegExp=-1表示没有符合正则的选项。
  1. If regEx.test(CurrentValue)Then
  2.              If (ItemToselect<>-1) Then
  3.                  SelectRegExp=-1    '表示匹配项不唯一
  4.            Reporter.Filter=oldFilter
  5.                  Exit function
  6.               End If
  7.               ItemToSelect=i
  8.     End If
复制代码
至于你的问题,你可以自己想想,如果没有成功的匹配项、只有一个匹配项,有多个匹配项的时候,ItemToSelect的值都是多少!
作者: zhangchaoy    时间: 2012-5-22 09:59
多谢楼上兄弟指教了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2