专栏名称: 51Testing软件测试网
51Testing软件测试网,人气最旺的软件测试技术门户,提供软件测试社区交流,软件测试博客,人才服务,测试沙龙,测试杂志,测试资料下载等全方位信息服务,是国内最专业的软件测试就业培训、企业服务供应商...
目录
相关文章推荐
51好读  ›  专栏  ›  51Testing软件测试网

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

51Testing软件测试网  · 公众号  · 测试  · 2017-01-23 17:31

正文



  当我们遇到以下情况时,可以做出如下定义:当条件是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)

  arrTemp = Array(50, 55, 60, 65, 70, 80)

  For i = LBound(arrTemp) To UBound(arrTemp)

  [Select Case](dic)

  Next

  输出

  50 Wear a coat!

  55 Wear a long-sleeved shirt!

  60 Wear a long-sleeved shirt!

  65 Wear a hat!

  70 Wear a hat!

  80 Wear a T-Shirt!

.......

本文出自《51测试天地》原创测试文章系列(四十四)

 
推荐阅读

点击阅读☞接口自动化测试实践浅谈

点击阅读☞需求评审的会议记录规范

点击阅读☞JavaScript单元测试利器-Mocha+chai

点击阅读☞纯软件测试与软件质量

点击阅读☞不用集福!《51测试天地》2017新春福利免费送!

点击左下角“阅读原文”查看更多内容!