如何在UFT中将变量从一个Action传递给Other

时间:2014-08-21 05:06:17

标签: qtp hp-uft

我有动作1,我在查询数据库并得到一个我存储在变量中的字段(比方说x)。在动作2中,我再次查询数据库,我想在where子句中使用存储在x中的值。

行动1的片段:

SQL1 =  "   SELECT      Identitynumber " &_
        "   FROM        VLC_CRM.dbo.Person " &_
        "   WHERE       Identitynumber = '" &IdentityNumber_ui&"'"


Set oRecordSet = oConnection.Execute(SQL1)

Do While NOT oRecordSet.EOF
    IdentityNumber_db_tmp = CStr(oRecordSet.Fields("Identitynumber").Value)
    IdentityNumber_db = RTrim(IdentityNumber_db_tmp)
    oRecordSet.MoveNext
Loop

动作2 SQL(我想在下面的Where子句中使用Action 1中的IdentityNumber_db)

SQL1 =      "   SELECT  TOP 1   CAST(la.LogonDate AS DATE) AS LogonDate," &_
            "                   la.LogonDate AS LastLogonDateTime"&_
            "   FROM            dbo.LogonAudit la" &_
            "   INNER JOIN      dbo.Person p" &_
            "   ON              la.EntityID = p.PersonID" &_
            "   WHERE           p.IdentityNumber = '"&IdentityNumber_db&"'"  &_
            "   ORDER BY        LastLogonDateTime DESC"

有人可以建议我如何将此值从Action 1传递给Action 2,以便我可以在我的SQL查询中使用它吗?

5 个答案:

答案 0 :(得分:3)

版本:UFT 12.51

使用语法: RunAction strActionName,oneIteration,Param1,Param2

  1. 输入参数<Param1><Param2>在您的第一个Action中声明,我称之为Action1。
  2. 将值传递给Action1局部变量,例如:Param1 = "a1_var1 --> from Action 1"
  3. 执行RunAction命令传递值 RunAction&#34; Action2&#34;,oneIteration,Param1
  4. 在Action2中,我检索了参数值并存储在Param2 Action 2中 局部变量, Param2 =参数(&#34; Param1&#34;)
  5. 参见截图 enter image description here

答案 1 :(得分:2)

最简单的方法是使用环境变量,但您也可以将输入参数设置为Action2并在Action1中调用它:

RunAction "Action2", oneIteration, parameter1,parameter2

其他可能的解决方案是 TestArgs(“argumentName”) - 它与参数相同,但 TestArgs 的范围适用于整个TestSet。 参数仅适用于给定的操作

答案 2 :(得分:1)

您在操作中声明的变量的范围仅限于该操作,因此您必须找到具有全局范围的变量,以使其可用于这两个操作。

一些选项......

  1. 使用包含数据的公共变量创建一个函数库
  2. 将值存储在Environment变量中(有关环境中用户定义值的详细信息,请参阅QTP帮助)
  3. 将值存储在全局数据表
  4. 这些选项中的每一个都使数据可用于脚本中的所有操作。

答案 3 :(得分:1)

您可以将参数从一个操作传递到另一个可重复使用的操作,但请遵循以下步骤;

  1. 从操作中转到操作属性(查看 - &gt;属性)
  2. 转到操作属性
  3. 中的参数
  4. 将输入参数添加到相同的
  5. 现在您可以从调用操作传递参数数量;

    RunAction strActionName, oneIteration, intIteration *

    您可以通过以下方式访问传递的参数;

    var_to_hold_arg =参数(“passed_arg”)

答案 4 :(得分:0)

在第一个操作中,您必须初始化环境值:

  

Environment.Value(&#34; yourName&#34;)= yourVariable

如果您想调用该值,请简单地写

  

yourVarFromSecondAction =环境(&#34; yourName&#34;)

正如@HgCoder所说,你可以使用已实施的excell表,但是当我与ALM合作时遇到了一些问题,所以要小心。

相关问题