QTP环境变量的动态生成与加载
2012-08-19 22:41
155 查看
用过QTP的大概都知道,QTP里有不少内置环境变量,在我们自动化测试中,大概经常用到的内置环境变量有:
ActionName 返回当前运行的是哪一个Action
LocalHostName 返回当前QTP运行的计算机名称
ResultDir 返回当前Test的测试报告的保存地址,不包括最后的”\”
SystemTempDir 返回系统的临时目录的路径,不包括最后的”\”
TestDir 返回当前测试的绝对路径,不包括最后的”\”
TestName 返回当前运行的Test名称
还有很多其他的内置环境变量,以上列举的都是我们测试中会经常用到的内置变量,但是测试中,更重要的是一些我们自己定义的环境变量,会给我们的测试带来很大的方便,下面我们看看怎样动态地创建跟加载自定义的环境变量(静态创建跟加载的方式我就不多说了,在File-Settings-Environment里可以操作)。 我总结了下,目前自己创建的外部的环境变量的文件格式一共有三种,最常见的是xml格式,其次是ini格式,最后还有txt格式。其实以上我列举的顺序也是QTP默认读取的顺序,我把它叫做优先级,如果这三种文件里都有一个叫URL的变量,QTP会优先读取xml格式里的URL的值。不懂没关系,看代码,然后测一下就可以验证了。
代码如下,这里我主要实现了三种文件类型的生成与读写:
'动态写入txt格式环境变量
Public Function GenTxtEnvVar(byref txtVar,byval varName,byval varValue)
txtVar = txtVar + _
varName + "=" + varValue + vbcrlf
End Function
'动态写入ini格式环境变量
Public Function GenIniEnvVar(byref iniVar,byval varName,byval varValue)
iniVar = iniVar + _
varName + "=" + varValue + vbcrlf
End Function
'动态写入xml格式环境变量
Public Function GenXmlEnvVar(byref xmlVar,byval varName,byval varValue)
xmlVar = xmlVar + _
"<Variable>" + vbcrlf + _
"<Name>" + varName + "</Name>" + vbcrlf + _
"<Value>" + varValue + "</Value>" + vbcrlf + _
"</Variable>" + vbcrlf
End Function
'动态生成环境变量文件
Public Function GenEnvFile(pathName,strVar,fileType)
Dim envStreamFile
fileType = UCase(fileType)
'自定义保留对象syFSO,创建对象Scripting.FileSystemObject
'详情请参考我的上一篇文章
Set envStreamFile = syFSO.CreateTextFile(pathName)
Select Case fileType
Case "XML"
envStreamFile.Write "<Environment>" + vbcrlf + _
strVar + _
"</Environment>"
Case "INI","TXT"
envStreamFile.Write "[Environment]" + vbcrlf + strVar
Case Else
msgbox "File Type Wrong! Please make sure the file type in [txt,xml,ini]."
End Select
Set envStreamFile = nothing
'Set syFSO = nothing
End Function
'以下是测试代码
Dim txtVar
Dim xmlVar
Dim iniVar
GenTxtEnvVar txtVar,"url","http://www.baidu.com"
GenTxtEnvVar txtVar,"userAccount","sunyu_qinxi"
GenXmlEnvVar xmlVar,"url","http://www.testdao.com"
GenXmlEnvVar xmlVar,"userAccount","zzzzzsy"
GenIniEnvVar iniVar,"url","http://www.cnblogs.com/ryansunyu/"
GenIniEnvVar iniVar,"userAccount","态度决定测试"
GenEnvFile "D:\test.txt",txtVar,"txt"
GenEnvFile "D:\test.xml",xmlVar,"xml"
GenEnvFile "D:\test.ini",iniVar,"ini"
'加载环境变量文件,获取其中的值
Environment.LoadFromFile "D:\test.txt"
Environment.LoadFromFile "D:\test.ini"
Environment.LoadFromFile "D:\test.xml"
Print Environment.Value("url")
这是我生成的结果,在D盘里的三个文件:
![](http://pic002.cnblogs.com/images/2012/399595/2012081922401337.png)
我的测试结果是 显示的URL的结果为” http://www.testdao.com”
进一步验证了我之前说的所谓的优先级,有兴趣的大家可以试试。
要注意的是,ini格式的是在QTP早期版本使用的环境变量文件的格式,8.0版本之后就开始使用xml格式了,所以在8.0以后的版本中是无法静态加载ini格式的环境变量的。认真读代码的朋友也发现了,txt格式跟ini格式的文件必须具备一定的格式,就是一定要在文件头加”[Environment]”,否则程序会报错。
ActionName 返回当前运行的是哪一个Action
LocalHostName 返回当前QTP运行的计算机名称
ResultDir 返回当前Test的测试报告的保存地址,不包括最后的”\”
SystemTempDir 返回系统的临时目录的路径,不包括最后的”\”
TestDir 返回当前测试的绝对路径,不包括最后的”\”
TestName 返回当前运行的Test名称
还有很多其他的内置环境变量,以上列举的都是我们测试中会经常用到的内置变量,但是测试中,更重要的是一些我们自己定义的环境变量,会给我们的测试带来很大的方便,下面我们看看怎样动态地创建跟加载自定义的环境变量(静态创建跟加载的方式我就不多说了,在File-Settings-Environment里可以操作)。 我总结了下,目前自己创建的外部的环境变量的文件格式一共有三种,最常见的是xml格式,其次是ini格式,最后还有txt格式。其实以上我列举的顺序也是QTP默认读取的顺序,我把它叫做优先级,如果这三种文件里都有一个叫URL的变量,QTP会优先读取xml格式里的URL的值。不懂没关系,看代码,然后测一下就可以验证了。
代码如下,这里我主要实现了三种文件类型的生成与读写:
'动态写入txt格式环境变量
Public Function GenTxtEnvVar(byref txtVar,byval varName,byval varValue)
txtVar = txtVar + _
varName + "=" + varValue + vbcrlf
End Function
'动态写入ini格式环境变量
Public Function GenIniEnvVar(byref iniVar,byval varName,byval varValue)
iniVar = iniVar + _
varName + "=" + varValue + vbcrlf
End Function
'动态写入xml格式环境变量
Public Function GenXmlEnvVar(byref xmlVar,byval varName,byval varValue)
xmlVar = xmlVar + _
"<Variable>" + vbcrlf + _
"<Name>" + varName + "</Name>" + vbcrlf + _
"<Value>" + varValue + "</Value>" + vbcrlf + _
"</Variable>" + vbcrlf
End Function
'动态生成环境变量文件
Public Function GenEnvFile(pathName,strVar,fileType)
Dim envStreamFile
fileType = UCase(fileType)
'自定义保留对象syFSO,创建对象Scripting.FileSystemObject
'详情请参考我的上一篇文章
Set envStreamFile = syFSO.CreateTextFile(pathName)
Select Case fileType
Case "XML"
envStreamFile.Write "<Environment>" + vbcrlf + _
strVar + _
"</Environment>"
Case "INI","TXT"
envStreamFile.Write "[Environment]" + vbcrlf + strVar
Case Else
msgbox "File Type Wrong! Please make sure the file type in [txt,xml,ini]."
End Select
Set envStreamFile = nothing
'Set syFSO = nothing
End Function
'以下是测试代码
Dim txtVar
Dim xmlVar
Dim iniVar
GenTxtEnvVar txtVar,"url","http://www.baidu.com"
GenTxtEnvVar txtVar,"userAccount","sunyu_qinxi"
GenXmlEnvVar xmlVar,"url","http://www.testdao.com"
GenXmlEnvVar xmlVar,"userAccount","zzzzzsy"
GenIniEnvVar iniVar,"url","http://www.cnblogs.com/ryansunyu/"
GenIniEnvVar iniVar,"userAccount","态度决定测试"
GenEnvFile "D:\test.txt",txtVar,"txt"
GenEnvFile "D:\test.xml",xmlVar,"xml"
GenEnvFile "D:\test.ini",iniVar,"ini"
'加载环境变量文件,获取其中的值
Environment.LoadFromFile "D:\test.txt"
Environment.LoadFromFile "D:\test.ini"
Environment.LoadFromFile "D:\test.xml"
Print Environment.Value("url")
这是我生成的结果,在D盘里的三个文件:
![](http://pic002.cnblogs.com/images/2012/399595/2012081922401337.png)
我的测试结果是 显示的URL的结果为” http://www.testdao.com”
进一步验证了我之前说的所谓的优先级,有兴趣的大家可以试试。
要注意的是,ini格式的是在QTP早期版本使用的环境变量文件的格式,8.0版本之后就开始使用xml格式了,所以在8.0以后的版本中是无法静态加载ini格式的环境变量的。认真读代码的朋友也发现了,txt格式跟ini格式的文件必须具备一定的格式,就是一定要在文件头加”[Environment]”,否则程序会报错。
相关文章推荐
- 【软件测试自动化-QTP系列讲座 33】== 环境变量的动态生成与秘密加载 ==
- QTP环境变量的动态生成与加载(深入篇)
- 根据环境变量配置,动态加载配置文件(区分开发环境,生成环境)
- js动态生成变量(eg:加载js并使用js变量)
- jsp/servlet使用ajax动态加载dtree, dtree样式/图片修改 (java 生成dtree servlet json)
- Python动态生成变量
- 如何给动态生成的变量一个名字
- VB 生成exe后,动态加载窗体的show事件会出现运行时错误5的解决方法
- linux启动环境变量配置文件加载图例
- 安装QTP之后造成环境变量java冲突问题的解决方案
- java虚拟机加载系统环境变量到内存中
- python动态加载变量示例分享
- 动态加载Dll时,通过Type生成类对象
- 动态生成加载ftl模板
- Ubuntu 12.04 启动时环境变量加载顺序(脚本调用顺序)
- 使用Apk动态加载框架(dynamic-load-apk)进行插件开发之环境搭建篇
- 动态加载并获取usercontrol生成的html
- Spring使用环境变量控制配置文件加载
- 构造网站后台,我的EXT+EFS模式(一)----配置环境与初试动态生成控件
- LD_LIBRARY_PATH环境变量设置及Linux动态库查找方法