QTP 的参数化,有以下几种方式:
1、Datatable
2、Test Parameter & Action Parameter
3、Enviornment 变量
首先,Datatable.这个是通过在QTP Datatable 中设定一组值然后通过代码读取
1、在Datatable 新增一列参数,如“DTParam1”
2、给DTParam1填入不同的值,如“Value1”, "Value2"
3、在专家试图通过 DataTable("DTParam1", "Global") '其中第一个参数是Datatable中参数列名,第二个参数是Datatable中Sheet名称。
如我们用 MsgBox DataTable("DTParam1", "Global") 就会弹出两次messagebox分别显示Value1, Value2.也就是说Datatable中有多少列我们就会把这个Action执行多少遍. 那么有可能存在以下几种情况:
1、一个Datatable中各个参数列中参数数量不一致时。--- 此时以Datatable中数量最多的参数列为准,其他列默认为空
2、在Action中用到了Global的Datatable,也用到了Action的Datatable那么我们以Global中的数量为准,如果其他Action Datatable中行数比Gobal Datatable中的多那么多余的部分被忽略。如果Action Datatable中行数多的话我们默认是将最后一个值反复的执行。那如果Gobal中没有设定Datatable参数,则该Action只会被执行一次。
注意:sheet参数最好不要直接输入“Global”,要使用dtGlobalSheet,dtLocalSheet。如果直接使用字符串导致该Action如果被其他Action调用的时候会出错的。
其次,Test Parameter & Action Parameter.
Test Parameter 的设置与使用:
- 选择QTP的“Setting”按钮, 进入Parameters Tab中,新增加一个Input Parameter, Name: Param1; Type: String; Default value: DefaultValue.
2、在专家试图中给读取、修改该Parameter.
Set qtApp1 = CreateObject("QuickTest.Application")
Set pDefColl = qtApp1.Test.ParameterDefinitions
Set rtParams = pDefColl.GetParameters() '获取该Test 中定义的所有Test Parameter
Set rtParam = rtParams.Item("Param1") '获取该Test某个Test Parameter
msgbox rtParam.Value '通过Value属性获取该Test Parameter的值, 这里弹出的Messagebox 文字是“DefaultValue”
rtParam.Value = "New Value" '重新给该Test Parameter赋值
msgbox rtParam.Value '这里弹出的Messagebox 文字是“New Value”
Action input Parameter 的设置与使用:
1、在专家试图中,鼠标右键-〉Action -> Action Properties -> Parameters 选项卡,在这里添加一个input parameter, Name: INParam; Type: String;
2、在Action的代码中使用:Parameter("INParam") 获取该参数的值
3、如果其他Action重要Run 包含Action Parameter的Action 则使用:RunAction "ActionName", oneIteration,"ParamValue"其中第一、三个参数分别是被调用Action的名字,Action的参数。那么如果被调用Action有多个参数则一直往后面增加,如:RunAction "ActionName", oneIteration,"Param1Value","Param2Value","Param3Value",.....
Action output Parameter 的设置与使用:
1、在专家试图中,鼠标右键-〉Action -> Action Properties -> Parameters 选项卡,在这里添加一个output parameter, Name: OUTParam; Type: String;
2、在被调用的Action中给该参数赋值,如Parameter("OUTParam")
3、通过下列两种方式获得output parameter的值,
第一:RunAction "ActionName", oneIteration,"ParamValue" ,ReturnOutParam, 其中RunAction 之后会把output parameter赋值给ReturnOutParam变量。
第二:RunAction "ActionName", oneIteration,"ParamValue"
ReturnOutParam = Parameter("Action2","OUTParam") RunAction时不获取其Output Parameter,在运行结果后再获取
Action Return Value: 在Action结束的时候增加一句ExitAction“Return Value",我们可以通过returnValue = RunAction("ActionName", ....)来获取return value.
顺便解释一个oneIteration(或者0): 每次只读取被调用Action datatable中的一行,如果当前Action的Globaltable中的行数>被调用Action datatable的行数,则剩余几行用被调用Action datatable的最后一行循环。
allIterations(或者1): 每次读取被调用Action datatable中的所有行,也就是说如果Global datatable中有n行,Action datatable中有m行则会被调用n*m次
http://blog.sina.com.cn/s/blog_505bf9af0100bpko.html?retcode=0
http://blog.csdn.net/xuyubotest/archive/2009/10/19/4699421.aspx (Parameters & Excel)
http://bbs.5etesting.com/viewthread.php?tid=541