QTP自动化测试权威指南 连载(四)

发表于:2013-6-18 10:58

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

 作者:赵旭斌 阙勇等译    来源:51Testing软件测试网

分享:

  这个问题可用使用下面的方法解决。我们给ExecuteFileGlobal方法增加一个加载标记,当它为False时库函数文件就不会加载。可以通过给所有使用ExecuteFileGlobal方法加载的库函数文件创建一个全局字典来实现。库函数文件的路径用来判断这个库是否被加载过。

'C: \LoadLibrary.vbs
Dim loadedFiles
Set loadedFiles = CreateObject("Scripting.Dictionary")
loadedFiles.CompareMode = vbTextCompare

'ExecuteFileGlobal方法动态加载文件
'Inputs - strFile: 需加载的完整文件名
'       reload: 是否重新加载已载入的文件
Public Function ExecuteFileGlobal (ByValstrFile,ByValreLoad)
 '判断reload为 False ,之后检查文件是否加载过
 If reload = False and loadedFiles.Exists (strFile) then
  ExecuteFileGlobal = False
  Exit Function
 End if

  '加载库函数文件
ExecuteFilestrFile
  '将文件加入字典列表
loadedFiles (strFile) = True
ExecuteFileGlobal = True
End Function

  通过一个例子可以更好理解上面代码。首先我们创建一个要动态加载的库函数文件。

'C:\TestA.vbs
Dim X
X = 2

  以下代码演示ExecuteFileGlobal的使用方法

'在全局区域加载testa.vbs
ExecuteFileGlobal "C:\testa.vbs", False
Msgbox X  '显示 2
X = X + 2

'在全局区域加载testa.vbs,如果已经加载则忽略
ExecuteFileGlobal "C:\testa.vbs", False
Msgbox X  '显示4

''在全局区域重新加载testa.vbs
ExecuteFileGlobal "C:\testa.vbs", True
Msgbox X  '显示 2

  问题 9-1. 如何动态定义全局变量

  有时我们需要动态在两个或多个Action中共享变量值。使用加载库函数文件的相同概念,我们可以在运行时创建全局变量。

Declare.vbs
 'C: \Declare.vbs
 Sub ExecuteGlobalCode (sStatement)
  ExecuteGlobalsStatement
 End Sub

Action1:
 '在全局范围执行代码
 ExecuteGlobalCode "Dim strText"
 strText = "TarunLalwani"

Action2:
 '将显示"TarunLalwani"
 MsgBoxstrText

  理解执行作用域

  理解测试脚本中全局作用域和本地作用域的区别是很重要的。

  ● 全局作用域是QTP加载所有测试资源和场景恢复库所在。测试脚本中的所有Action都可以访问

  ● 本地作用域是指所有在Action中定义的作用区域,不可被此Action之外所访问

32/3<123>
春暖花开更文季,点击参与还有惊喜礼品~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号