Как передать переменную из одного действия в другое в UFT

У меня есть действие 1, где я запрашиваю базу данных и получаю поле, которое я сохраняю в переменной (скажем, x). В действиях 2 я снова запрашиваю базу данных, где я хочу использовать значение, хранящееся в x в предложении where.

Фрагмент действия 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 (я хочу использовать IdentityNumber_db из действия 1 в моем предложении «Где» ниже)

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"

Может кто-нибудь предложить, как я могу передать это значение из действия 1 в действие 2, чтобы я мог использовать его в своем SQL-запросе?


person user3435903    schedule 21.08.2014    source источник


Ответы (5)


Версия: UFT 12.51

Используйте синтаксис: RunAction strActionName, oneIteration, Param1, Param2

  1. Входные параметры <Param1>, <Param2> объявлены в вашем первом действии, я назвал его Action1.
  2. Передайте значение в локальную переменную Action1, например: Param1 = "a1_var1 --> from Action 1"
  3. Выполните команду RunAction, чтобы передать значение RunAction "Action2", oneIteration, Param1.
  4. В Action2 я получил значение параметра и сохранил в Param2 локальную переменную Action 2, Param2 = Parameter("Param1")

См. скриншот.
введите здесь описание изображения

person donubas    schedule 10.03.2016

Самый простой способ — использовать переменную Environment, но вы также можете установить для входного Parameter значение Action2 и вызвать его в Action1:

RunAction "Action2", oneIteration, parameter1,parameter2

Другим возможным решением является TestArgs("argumentName") - это то же самое, что и Parameter, но область действия TestArgs распространяется на весь TestSet. Параметр предназначен только для данного действия.

person Mateusz Psujek    schedule 03.09.2014

Переменные, которые вы объявляете в действии, доступны только для этого действия, поэтому вам нужно найти что-то с глобальной областью действия, чтобы сделать его доступным для обоих действий.

Некоторые варианты...

  1. Создайте библиотеку функций с общедоступными переменными, в которых будут храниться ваши данные.
  2. Сохраните значение в переменной среды (подробности о пользовательском значении в среде см. в справке QTP)
  3. Сохраните значение в таблице глобальных данных.

Каждая из этих опций делает данные доступными для всех действий в вашем скрипте.

person HgCoder    schedule 21.08.2014

В первом действии вы должны инициализировать значение среды:

Environment.Value("yourName") = yourVariable

и если вы хотите вызвать это значение, напишите просто

yourVarFromSecondAction= Окружающая среда ("вашеИмя")

Как сказал @HgCoder, вы можете использовать реализованный лист Excel, но у меня были некоторые проблемы, когда я работал с ALM, поэтому будьте осторожны.

person Artur Szwedo    schedule 28.08.2014

Вы можете передавать аргументы от одного действия к другому, которое можно использовать повторно, но для этого выполните следующие шаги:

  1. внутри действия перейдите к свойствам действия (Вид -> Свойства)
  2. Перейти к параметрам из свойств действия
  3. Добавить входной параметр к тому же

Теперь вы можете передать количество параметров из вызывающего действия;

RunAction strActionName, oneIteration, intIteration*

Вы можете получить доступ к переданному аргументу;

var_to_hold_arg = Параметр ("passed_arg")

person Kshetra Mohan Prusty    schedule 30.04.2015