Использовать основной пул данных для всех callScripts в RFT

Можно ли использовать один пул данных для всех моих скриптов? У каждого сценария уже есть существующий пул данных, и я хочу не использовать его, а вместо этого использовать главный пул данных. Основной пул данных должен содержать все столбцы каждого скрипта.

У меня также должен быть основной сценарий, который функционирует как вызывающий объект для всех моих сценариев, поэтому код должен быть только в основном сценарии, вызываемые сценарии не должны изменяться.

Например: у меня есть сценарий входа в систему с именем пользователя и паролем, а затем сценарий add_employee, содержащий имя и фамилию.

  • Основной пул данных содержит столбцы имени пользователя, пароля, имени и фамилии.
  • Основной сценарий содержит только код для использования указанного (основного) пула данных для всех его сценариев вызова, а также сценарии, которые необходимо вызвать.

Я пытался прочитать код по ссылке ниже, но я думаю, что код нужно вставлять в каждый (суб)скрипт. Что мне нужно, так это код в основном сценарии, который повлияет на все вызываемые сценарии. Rational Functional Tester - Как заставить сценарии, вызываемые из родительского сценария, использовать родительский пул данных?


person Harambe Attack Helicopter    schedule 21.01.2015    source источник


Ответы (2)


Не совсем уверен, как решить вашу проблему с пулом данных, но есть способ написать код, влияющий на все ваши скрипты, — с помощью вспомогательного суперкласса.

В Functional Tester все скрипты имеют суперкласс помощника скрипта. Все вспомогательные классы сценариев являются подклассами RationalTestScript. С помощью супервспомогательного класса сценарии являются подклассами супервспомогательного класса, а супервспомогательный класс наследуется от RationalTestScript.

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

Дополнительные сведения о вспомогательных суперклассах: http://www.ibm.com/developerworks/rational/library/1093.html.

person Roland    schedule 21.01.2015

Вы можете предоставить значения пула данных сценария вызывающего объекта вызываемому объекту в качестве аргументов сценария. Вызываемый объект должен переопределить метод dpString, чтобы иметь возможность считывать значения своего пула данных из аргументов скрипта в случае, если он вызывается из другого скрипта.

Кстати, это выглядит как хорошая тема для блога!

Попытался обобщить решение, надеюсь, оно даст вам представление:

Тебе надо

определить вспомогательный суперкласс:

public abstract class SingleDPSupport extends RationalTestScript

с полем для идентификации того, что один скрипт вызывается из другого:

private static bool isCalledFromAnother = false;

Укажите другой метод callScript:

protected void callMyScript(RationalTestScript script,  Object[] args)
{
    isCalledFromAnother = true;
    args = appendDp(args);//this method should append datapool values to args array with a special prefix such as "_dp_"
    callScript(script, args);
    isCalledFromAnother = false;
}

Переопределите dpString для чтения этих специальных аргументов:

public String dpString(String variableName) {
    if (isCalledFromAnother)
        return findDpStringFromArgs(getScriptArgs(), DP_ARG_NAME_START+variableName, null);

    return super.dpString(variableName);
}
person Cagin Uludamar    schedule 22.01.2015