Qtp 在UFT中如何将变量从一个动作传递到另一个动作

Qtp 在UFT中如何将变量从一个动作传递到另一个动作,qtp,hp-uft,Qtp,Hp Uft,我有一个操作1,在这里我查询数据库并得到一个字段,我将它存储在变量中(比如x)。在操作2中,我再次查询要在何处使用where子句中存储在x中的值的db 操作1的片段: SQL1 = " SELECT Identitynumber " &_ " FROM VLC_CRM.dbo.Person " &_ " WHERE Identitynumber = '" &IdentityNumber_ui

我有一个操作1,在这里我查询数据库并得到一个字段,我将它存储在变量中(比如x)。在操作2中,我再次查询要在何处使用where子句中存储在x中的值的db

操作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子句中使用来自操作1的IdentityNumber_db)


有人能建议我如何将此值从操作1传递到操作2,以便在SQL查询中使用它吗?

您在操作中声明的变量的作用域仅适用于该操作,因此您必须找到具有全局作用域的内容,使其可用于两个操作

一些选择

  • 创建一个包含公共变量的函数库,该变量将保存您的数据
  • 将值存储在环境变量中(有关环境中用户定义值的详细信息,请参阅QTP帮助)
  • 将值存储在全局数据表中

  • 每个选项都使数据可用于脚本中的所有操作。

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

    Environment.Value(“yourName”)=yourVariable

    如果您想调用该值,只需简单地编写

    yourVarFromSecondAction=Environment(“yourName”)


    正如@HgCoder所说,您可以使用已实现的ExcelSheet,但我在与ALM相关的工作中遇到了一些问题,因此请小心。

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

    RunAction“Action2”,oneIteration,参数1,参数2


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

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

  • 在操作中,转到操作属性(查看->属性)
  • 从操作属性转到参数
  • 将输入参数添加到相同的
  • 现在,您可以通过调用操作传递参数的数量

    RunAction strActionName、oneIteration、Interation
    *

    您可以通过访问传递的参数

    var_to_hold_arg=参数(“已通过参数”)

    版本:UFT 12.51

    使用以下语法:RunAction strActionName、oneIteration、Param1、Param2

  • 输入参数
    在您的第一个操作中声明,我称之为Action1
  • 将值传递给Action1局部变量,例如:
    Param1=“a1_var1-->来自Action 1”
  • 执行RunAction命令以传递值,RunAction“Action2”,oneIteration,Param1
  • 在Action2中,我检索了参数值并存储在Param2 Action 2中 局部变量,Param2=参数(“Param1”)
  • 请参阅屏幕截图。

    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"