环境变量的用法
在qtp中存在着两种类型的环境变量:
- 内置环境变量
- 自定义内部环境变量
- 自定义外部环境变量
内置环境变量
介绍:它是qtp内部已经事先封装好.
方式:直接进入到Settings –> Environment中选择built-in选项即可查询到所有的内置环境变量。并且这些环境变量的值都是qtp已经封装好的。
举例: Msgbox Environment.Value(“TestName”)
结果:直接可以获取到当前测试脚本名称。
自定义内部环境变量
介绍:它是qtp中的一种可以在qtp内部进行自定义的环境变量
方式:直接进入到Settings –> Environment中选择User-defined选项,点击旁边的”+”,即可定义name 和 value
举例:Msgbox Environment.Value(“自定义名称”)
结果:直接可以获取到当前自定义环境变量的值
自定义外部环境变量
介绍:直接从xml格式文件中进行读取环境变量
方式:进入Settings –> Environment中选中Load variables and values from external file并给出xml的文件路径
举例:xml文件
<Environment>
< Variable>
<Name>Url</Name>
<Value>http://www.iquicktest.com</Value>
</Variable>
</Environment>
Msgbox Environment.Value(“Url”)
结果:直接打印结果为http://www.iquicktest.com
注意:1. 环境变量中的属性名是大小写敏感的
2. xml必须按照上述格式
环境变量的动态生成与秘密加载
动态生成 —- 使用FSO把我们需要的变量动态的写入一个XML文件
这边主要是通过两个函数:
第一个函数getVariable是可以让我们添加环境变量并通过指针变量进行迭代增加,
第二个函数generateEnvFile是根据指针变量生成环境变量XML文件。
'************************** 初始化环境变量 ******************************
getVariable allEnvVar,"url","http://www.baidu.com"
getVariable allEnvVar,"username","emilyzhang88"
getVariable allEnvVar,"password","123456"
'******************** 生成外部环境变量XML文件 ****************************
generateEnvFile "C:\readXML\Login.xml",allEnvVar
'********************************************************************
'Description:获取所有环境变量字符串
'Parameters:XmlVar(指针变量,环境变量字符),arName(环境变量名),varValue(环境变量值),
'Return Value:无
'********************************************************************
Function getVariable(byRef xmlVar,byVal varName,byVal varValue)
xmlVar = xmlVar + _
"<Variable>" + vbCrLf + _
"<Name>" + varName + "</Name>" + vbCrLf + _
"<Value>" + varValue + "</Value>" + vbCrLf + _
"</Variable>" + vbCrLf
msgbox xmlVar
End Function
'********************************************************************
'Description:生成环境变量XML文件
'Parameters:envPathName(路径名),getVar(获取的环境变量字符)
'Return Value:无
'********************************************************************
Function generateEnvFile(envPathName,getVar)
envStream = _
"<Environment>" + vbCrLf + _
getVar + _
"</Environment>"
Set fso = CreateObject("scripting.filesystemobject")
Set envStreamFile = fso.CreateTextFile(envPathName)
envStreamFile.Write envStream
Set envStreamFile = Nothing
Set fso = Nothing
End Function
调用上面自动生成的xml文档,动态加载环境变量
Environment.LoadFromFile "C:\readXML\Login.xml"
msgbox Environment.Value("username")
注意:
- 动态加载可以有两种文件类型: [*.xml] 和 [*.ini]
- 静态只能加载一种文件类型: [*.xml]
最早在QTP 5.X和6.X的时候QTP是使用INI文件作为外部环境变量来使用的,到了后来8.0以后开始就使用了XML的形式来储存,因此静态的加载方式已经被屏蔽了,但是动态加载还是可以使用INI文件来在加载,不过文件必须遵循一定的格式.
格式如下:
[Environment]
username = xxx12345
password = 123456
最近再写paypal系统的自动化测试脚本,想声明一个全局变量,可以在另外一个action中使用。
也就是在action1中,在一个weblist中选择一个值value后,通过insert->call to copy of action添加一个action2,想在action2中使用action1中选择的value。
具体步骤如下:
1.在action1中,file->Settings->Environment在用户自定义变量中添加一个环境变量"batch”,代码如下:
2.在action2中引用该环境变量,如下:
3.运行脚本,通过。