QTP使用之一个灵活的数据驱动型的选择案例函数

发表于:2017-1-23 09:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:译者:杨 俊    来源:51Testing软件测试网原创

  当我们遇到以下情况时,可以做出如下定义:当条件是true时,触发某个函数或子程序、又或者某段代码执行。一般情况下,我们是通过编写决策结构代码来实现,比如简单情况下使用'IF-Else'结构代码,复杂情况下,会使用Switch(在JavaScript中)结构代码。
  然而,我们也可以通过数据驱动的方式来实现它。例如:假设有一个excel文档,里面有两列,分别命名为"条件"和"行为"。"条件"列对应的单元格下,每行将包含一字符串表达式,可以被计算成"真"或者"假"。若结果是"真",则执行"行为"列中单元格里面的函数(或者一段有效代码)。
  该excel列表将被作为字典对象数据加载进来,再定义一个函数,函数将计算字典对象中每个条件项的结果,当计算到某一行的条件是true或者计算到整个数据列表结束,则退出。在下面,你可以看到这个函数,将很精确的实现该特性。
  函数的数字签名是:
  Function [Select Case](ByVal dicCases)
  dicCases是一个带有键-值对的字典对象,键定义每个条件,值定义条件为真时的执行。
  请注意:方括号是VBScript一不太常用的特性,里面可以使用特殊字符或者保留关键字来标识。
-----------------------------------------------------------------------------------------
Function [Select Case](ByVal dicCases)
Dim [Case], [Cases]
[Select Case] = False
If (Not TypeName(dicCases) = "Dictionary") Then
Print("Nothing to do")
Exit Function
End If
If (dicCases.Count = 0) Then
Print("Nothing to do")
Exit Function
End If
[Cases] = dicCases.keys
For each [Case] in [Cases]
[Select Case] = Eval([Case])
If([Select Case])Then
Execute(dicCases([Case]))
Exit For
End If
Next
End Function
-----------------------------------------------------------------------------------------
  使用
Dim arrTemp, i
Dim dic
Set dic = CreateObject("Scripting.Dictionary")
dic.Add "arrTemp(i)>70", "Print(arrTemp(i)&"" Wear a T-Shirt!"")"
dic.Add "arrTemp(i)>60", "Print(arrTemp(i)&"" Wear a hat!"")"
dic.Add "arrTemp(i)>50", "Print(arrTemp(i)&"" Wear a long-sleeved shirt!"")"
dic.Add "arrTemp(i)< =50", "Print(arrTemp(i)&"" Wear a coat!"")"
arrTemp = Array(50, 55, 60, 65, 70, 80)
For i = LBound(arrTemp) To UBound(arrTemp)
[Select Case](dic)
Next
   ... ...
   查看全文内容,请点击下载:http://www.51testing.com/html/15/n-3715215.html
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号