1.8.28. TbtkScriptTesterObject

class TbtkScriptTesterObject

Класс, реализующий методы работы с тестируемым приложением Global.

RecordingOperationName: String

Имя операции, куда будут отправляться новые сгенерированные строки скрипта и результаты выполнения операций, отправленных методом TbtkScriptTesterObject.AddRecorderManualOperation.

Return type:String

Входные параметры:

  1. Текст новой строки скрипта или результат выполнения операции.
  2. Имя операции чей результат вернулся. Если вызов был произведён не в результате выполнения операции, а как результат непосредственной записи пользовательских действий- пустая строка.
DefualtRaiseOnTimeout: Boolean

Задаёт значение подставляемое по-умочанию в дефолтный параметр RaiseOnTimeout ф-й поддерживающих обработку ошибок сервера

Return type:Boolean
DefaultDoRaise: Boolean

Задаёт значение подставляемое по-умочанию в дефолтный параметр DoRaise ф-й поддерживающих обработку ошибок сервера

Return type:Boolean
DefaultWaitExecTimeout: Integer

Задаёт значение подставляемое по-умочанию в дефолтный параметр Timeout ф-й поддерживающих обработку ошибок сервера

Return type:Integer
RaiseOperationName: String

Задаёт системное имя Pascal-операции обрабатывающей невыброшенные скриптовыми методам исключительные ситуации. В операцию первым параметром поступает текст исключительной ситуации, для того, чтобы можно было, например, сохранить его в лог выполнения скрипта. Операция должна принадлежать той же выборке что исполняет скрипт.

Return type:String
ScriptRecording: Boolean

Свойство указывает, что тестируемое приложение работает в режиме записи тестового скрипта.

Return type:Boolean
Runned: Boolean

Свойство указывает, запущено ли тестируемое приложение.

Аттрибут только для чтения

Return type:Boolean
AddRecorderManualOperation(SysName, Caption: String; ImageIndex: Integer; ScriptText: String)

Добавлет операцию ручного управления записью скрипта

Parameters:
  • SysName (String) – Системное имя операции, которое ей будет присвоено.
  • Caption (String) – поле DisplayLabel операции.
  • ImageIndex (Integer) – Номер пиктограммы в основном ImageList’е приложения.
  • ScriptText (String) – Текст Pascal-операции.

Note

  • Метод должен вызываться в то время когда тестируемое приложение находится в режиме записи скрипта, т.е. после выполнения метода TbtkScriptTesterObject.EnableScriptRecording.
  • После завершения записи (TbtkScriptTesterObject.DisableScriptRecording) все операции удаляются как и сам объект ручного управления записью скрипта.
CloseActiveModalWindow(ModalResult: TModalResult; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Закрывает модальное окно

Parameters:
  • ModalResult (TModalResult) – Результат модального выполнения.
  • Timeout (Integer) – Временной интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.

Note

  • CommandType = tcUnknown
  • Находит верхнее окно (GetForegroundWindow) в целом, и, если оно принадлежит Серверному приложению - присвавает ему результат модального выполнения, что опосредованно должно привести к его закрытию.
CloseActiveWindow(Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Метод закрвыает окно

Parameters:
  • Timeout (Integer) – Временной интервал ожидания
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.

Note

  • CommandType = tcUnknown
  • Находит верхнее окно, проверяет на принадлежность к Серверу (ищет хендл среди компонентов) и посылает ему сообщение PostMessage WM_Quit.
RunAsCurrent(CmdLine: String)

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

Parameters:CmdLine (String) – Параметры командной строки
WaitDialogA(DialogCaption: String; TimeOut: Integer)

Метод ожидает отображения диалога в тестируемом приложении. Если диалог не будет отображён в течении указанного интервала времени, будет сгенерирована ошибка.

Parameters:
  • DialogCaption (String) – Заголовок окна диалога.
  • TimeOut (Integer) – Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении. (в миллисекундах).

Note

то же самое, что и WaitWindow, но ClassName фиксирован - “TbtkMessageForm”.

Пример использования
<pascal>
  TestApp.WaitDialog('Текст заголовка', 1000);
  // Вызов идентичен вызову:
  TestApp.WaitWindow('TbtkMessageForm', 'Текст заголовка', 1000);
</pascal>
InputText(Text: String)

Метод эмулирует клавиатурный ввод текста в текущий контрол.

Parameters:Text (String) – Текст, который будет введён в текущий контрол
Пример использования
<PASCAL>
  TestApp.Run(''); // Запуск приложения
  TestApp.WaitWindow('TbtkConnectForm', 'Соединение', 10000); // Ожидание формы ввода пароля
  Sleep(1000);
  TestApp.InputText('password'); // Ввод пароля
  Sleep(1000);
  TestApp.KeyPress(9); // Переход по клавише Tab на поле выбора базы
  Sleep(1000);
  TestApp.KeyPress(9); //Переход по клавише Tab на кнопку OK
  TestApp.KeyPress(13); // Нажатие Enter, для закрытия диалога
</PASCAL>
ExecuteOperation(SelectionName, Representation, OperationName: String; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Метод выподняет операцию, принадлежащую выборке с указанным именем и отображением.

Выполнение операции производится асинхронно.

Parameters:
  • SelectionName (String) – Системное имя выборки
  • Representation (String) – Отображение выборки
  • OperationName (String) – Имя операции
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.

Note

CommandType = tcExecuteOperation

Пример использования
<PASCAL>
  // Запуск приложения
  TestApp.Run('username/password@DBName#btk');
  // Ожидание окна выбора приложения
  TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000);
  Sleep(1000);
  // Позиционирование в списке приложений на Конфигуратор
  TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST',
  'sSystemName', 'SEL_ConfiguratorMainMenu');
  Sleep(1000);
  // Выбор приложения, нажатием операции CloseFormOk
  TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST',
  'CloseFormOk');
  // Ожидание клавной выборки приложения
  TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000);
  Sleep(1000);
  TestApp.Quit;
</PASCAL>
Quit()

Метод завершает работу, запущенного ранее экземпляра тестируемого приложения. Если в тестируемом приложении открыты какие-либо окна будет задан вопрос о подтвеждении закрытия.

Пример использования
<PASCAL>
  // Запуск приложения
  TestApp.Run('username/password@DBName#btk');
  // Ожидание окна выбора приложения
  TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000);
  Sleep(1000);
  // Позиционирование в списке приложений на Конфигуратор
  TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST',
  'sSystemName', 'SEL_ConfiguratorMainMenu');
  Sleep(1000);
  // Выбор приложения, нажатием операции CloseFormOk
  TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST',
  'CloseFormOk');
  // Ожидание клавной выборки приложения
  TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000);
  Sleep(1000);
  TestApp.Quit;
</PASCAL>
IsSelectionActive(SelectionName, Representation: String; Timeout: Integer; DoRise, RaiseOnTimeout: Boolean): Integer

Метод проверяет существование и активность выборки с указанным именем и отображением на текущей форме тестируемого приложения. Возможные результаты, возвращаемые методом:

1
Выборка существует и активна
-1
Выбока не найдена
-2
Выборка не активна
Parameters:
  • SelectionName (String) – Имя выборки
  • Representation (String) – Отображение
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.
Return type:

Integer

ExecuteOperationEx(SelectionName, Representation, OperationName: String; ParamNames, ParamValues: Array; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Метод выполняет операцию, принадлежащую выборке с указанным именем и отображением. В метод возможно передать параметры, управляющие режимом выполнения операции. Указание параметров может быть необходимо при вызове сеттеров, в которых производится анализ свойств SetterExecType, GetEditButtonName и UserActionType.

Имя параметра Возможные значения
‘SetterExecType’

etUnknown

etEditBtn (по-умолчанию)

etClearBtn

etManual

etSetVar

etExecOp

etBulkUpdate

‘ButtonName’

‘LOOKUP#’ - кнопка выбора значения (по умолчанию)

‘OPENCARD#’ - кнопка открытия карточки

‘UserAction’

uaUnknown (по-умолчанию)

uaNextControl

Выполнение операции производится асинхронно.

Parameters:
  • SelectionName (String) – Имя выборки
  • Representation (String) – Отображение
  • OperationName (String) – Имя операции
  • ParamNames (Array) – Массив параметров
  • ParamValues (Array) – Массив значений параметров
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.
CloseActiveForm(Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Метод закрывает текущую активную форму тестового приложения. Определение активной формы приложения производится в следующем порядке:

  1. Диалог (форма диалога должена быть активной)
  2. Модальная форма
  3. MDI форма
  4. Главное окно приложения
Parameters:
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.

Note

  • CommandType = tcCloseActiveForm
  • Просто закрывает активную форму серверного приложения, аналогично CloseActiveModalForm (mrCancel), но асинхронно: на CloseQuery может быть повешен модальный вызов - он не должен остановить выполнение скрипта.
DisableScriptRecording()

Метод выключает в тестируемом приложении режим записи тестового скрипта.

EnableScriptRecording()

Метод включает в рестируемом приложении режим записи тестового скрипта.

Метод должен вызываться из выборки, редактором которой является TbtkLookUpScriptEditFrame или TbtkScriptEditFrame. Допустимо, если редактор скрипта будет являться детальным фреймом к фрейму текущей выборки. Это условие необходимо из-за того, что регистратором скрипта является “фрейм - редактор скриптов”, Handle которого передаётся тестируемому приложению.

FocusOnFieldByName(SelectionName, Representation, FieldName: String; Timeout: Integer; DoRise, RaiseOnTimeout: Boolean)

Метод перемещает фокус ввода на контрол, являющийся редактором для указанного атрибута выборки. Для карточки, это будет редактор, для списка или дерева, колонка соответствующая указанному атрибуту.

Parameters:
  • SelectionName (String) – Системное имя выборки
  • Representation (String) – Отображение
  • FieldName (String) – Имя атрибута
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.
FocusOnFirstControl(Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Установить фокус на первый контрол активной формы.

Parameters:
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.
KeyPressA(Key: Integer; ShiftState: Array)

Метод эмулирует нажатие комбинации клавиш.

Parameters:
  • Key (Integer) – Код клавиши, нажатие которой должно быть эмулировано.
  • ShiftState (Array) –

    Массив определяет, какие функциональные клавиши (Alt, Ctrl, Shift) были нажаты в дополнении к основной клавише. Допустимые значения элементов массива:

    • ssAlt
    • ssCtrl
    • ssShift
Пример использования
<PASCAL>
  TestApp.KeyPressA(ord('D'), [ssAlt, ssCtrl, ssShift]);
</PASCAL>
KeyPress(Key: Integer)

Метод эмулирует нажатие клавиши с указанным кодом.

Parameters:Key (Integer) – Код клавиши, нажатие которой должно быть эмулировано.
Пример использования
<PASCAL>
  TestApp.Run(''); // Запуск приложения
  TestApp.WaitWindow('TbtkConnectForm', 'Соединение', 10000); // Ожидание формы ввода пароля
  Sleep(1000);
  TestApp.InputText('password'); // Ввод пароля
  Sleep(1000);
  TestApp.KeyPress(9); // Переход по клавише Tab на поле выбора базы
  Sleep(1000);
  TestApp.KeyPress(9); //Переход по клавише Tab на кнопку OK
  TestApp.KeyPress(13); // Нажатие Enter, для закрытия диалога
</PASCAL>
SelectionGetVar(SelectionName, Representation, VarName: String; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean): Variant

Метод возвращает значение атрибута (параметра) указанной выборки.

Parameters:
  • SelectionName (String) – Системное имя выборки
  • Representation (String) – Отображение выборки
  • VarName (String) – Имя параметра
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.
Return type:

Variant

SelectionSetVar(SelectionName, Representation, VarName: String; Value: Variant; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Метод устанавливает значение параметру в указанной выборке.

Parameters:
  • SelectionName (String) – Системное имя выборки
  • Representation (String) – Отображение выборки
  • VarName (String) – Имя параметра
  • Value (Variant) – Значение параметра
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.

Note

  • CommandType = tcSetVar
  • Если серверный сеттер решит вернуть сообщение об ошибке - оно уже не попадёт в результат выполнения этого метода, т.к. SQL-Операция выполняется асинхронно - исключение будет выбрано из очереди следующим поддерживающим обработку ошибок сервера методом за этим.
WaitSelection(SelectionName, Representation: String; TimeOut: Integer)

Метод ожидает создания и открытия выборки с указанным именем. Если выборка не будет создана и открыта в течении указанного интервала времени, будет сгенерирована ошибка.

Parameters:
  • SelectionName (String) – Имя выборки.
  • Representation (String) – Отображение выборки.
  • TimeOut (Integer) – Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении. (в миллисекундах).

Note

Это не метод интерфейса, он реализован непосредственно на уровне объекта TestApp. Выполняет в цикле проверку TbtkScriptTesterObject.IsSelectionActive с задержкой в 100 миллисекунд, если за время работы ф-и выборка с такими характеристиками так и не появилась - будет выброшена исключительная ситауция “Ожидание выборки прекращено по таймауту”. После каждого вызова IsSelectionActive так же выполняется проверка на наличие ошибок в очереди сервера.

Пример использования
<PASCAL>
  // Запуск приложения
  TestApp.Run('username/password@DBName#btk');

  // Ожидание окна выбора приложения
  TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000);
  Sleep(1000);

  // Позиционирование в списке приложений на Конфигуратор
  TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST',
  'sSystemName', 'SEL_ConfiguratorMainMenu');
  Sleep(1000);

  // Выбор приложения, нажатием операции CloseFormOk
  TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST',
  'CloseFormOk');

  // Ожидание клавной выборки приложения
  TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000);
  Sleep(1000);

  TestApp.Quit;
</PASCAL>
CloseActiveModalForm(ModalResult: TModalResult; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean)

Метод закрывает текущую активную модальную форму тестового приложения установкой форме соответствующего значения ModalResult. Определение активной модальной формы приложения производится в следующем порядке:

  1. Диалог (форма диалога должена быть активной)
  2. Модальная форма

Не модальные формы метод не закрывает.

Parameters:
  • ModalResult (TModalResult) – Значение, которое будет присвоено свойству ModalResult формы.
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.
WaitDialog(TimeOut: Integer)

Метод ожидает отображения диалога в тестируемом приложении. Если диалог не будет отображён в течении указанного интервала времени, будет сгенерирована ошибка.

Parameters:TimeOut (Integer) – Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении (в миллисекундах).

Note

  • CommandType = tcUnknown
  • Работает как WaitSelection, проверяет верхнее окно Серверного приложения на ClassName = 'TbtkMessageForm' и состояние fsModal in FormState
Пример использования
<pascal>
  TestApp.WaitDialog(1000);
  // Вызов идентичен вызову:
  TestApp.WaitWindow('TbtkMessageForm', '', 1000);
</pascal>
WaitWindow(WindowClass, WindowCaption: String; TimeOut: Integer)

Метод ожидает отображения в тестируемом приложении окна указанного класса и с указанным текстом в загноловке. Если окно не будет отображено в течении указанного интервала времени, будет сгенерирована ошибка.

Parameters:
  • WindowClass (String) – Класс окна Windows.
  • WindowCaption (String) – Заголовок окна.
  • TimeOut (Integer) – Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении. (в миллисекундах).
Пример иллюстрирует запуск тестируемого приложения и ввод в диалог содинения имени пользователя
// Паузы в выполнении скрипта (Sleep) оставлены для большей наглядности.

<PASCAL>
TestApp.Run(''); // Запуск приложения
TestApp.WaitWindow('TbtkConnectForm', 'Соединение', 10000); // Ожидание формы ввода пароля
Sleep(1000);
TestApp.InputText('password'); // Ввод пароля
Sleep(1000);
TestApp.KeyPress(9); // Переход по клавише Tab на поле выбора базы
Sleep(1000);
TestApp.KeyPress(9); //Переход по клавише Tab на кнопку OK
TestApp.KeyPress(13); // Нажатие Enter, для закрытия диалога
</PASCAL>
Terminate()

Метод аварийно завершает работу тестируемого приложения. Тестируемое приложение завершает свою работу без запросов закрытия активных форм.

Run(CmdLine: String; InitSyncronize: Boolean)

Метод запускает экземпляр тестируемого приложения.

Parameters:
  • CmdLine (String) – Параметры командной строки.
  • InitSyncronize (Boolean) –

    Синхронизировать выполнение операций.

    True
    При выполнении операций будет выполнен забор сообщений (на данный момент: результаты выполнения команд и недетерминированные ошибки сервера) от OLE-сервера тестирования. При наличии сообщения или timeout’а будет возбуждено исключение.
Пример использования
<PASCAL>
  // Запуск приложения
  TestApp.Run('username/password@DBName#btk');
  // Ожидание окна выбора приложения
  TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000);
  Sleep(1000);
  // Позиционирование в списке приложений на Конфигуратор
  TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST', 'sSystemName', 'SEL_ConfiguratorMainMenu');
  Sleep(1000);
  // Выбор приложения, нажатием операции CloseFormOk
  TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST', 'CloseFormOk');
  // Ожидание клавной выборки приложения
  TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000);
  Sleep(1000);
  TestApp.Quit;
</PASCAL>
Возможные варианты использования метода
<PASCAL>
  // Отобразится диалог ввода пользовател и пароля
  TestApp.Run('');
  // Если имя пользователя и пароль указаны верно, отобразится диалог выбора приложения
  TestApp.Run('username/password@DBName#btk');
  // Запустится указанное приложение
  TestApp.Run('username/password@DBName#btk SEL_ConfiguratorMainMenu');
</PASCAL>
SelectionLocate(SelectionName, Representation, FieldName: String; FieldValue: Variant; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean): Integer

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

1
Позиционирование произведено успешно
-1
Выбока не найдена
-2
Выборка не активна
-4
Запись не найдена
Parameters:
  • SelectionName (String) – Имя выборки.
  • Representation (String) – Отоборажение выборки.
  • FieldName (String) – Имя поля.
  • FieldValue (Variant) – Значение поля.
  • Timeout (Integer) – Интервал ожидания.
  • DoRaise (Boolean) – Возбуждать исключение при ошибке во время выполенния метода.
  • RaiseOnTimeout (Boolean) – Возбуждать исключение при превышении таймаута ожидания.
Return type:

Integer

Пример использования
<PASCAL>
  // Запуск приложения
  TestApp.Run('username/password@DBName#btk');
  // Ожидание окна выбора приложения
  TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000);
  Sleep(1000);
  // Позиционирование в списке приложений на Конфигуратор
  TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST', 'sSystemName', 'SEL\_ConfiguratorMainMenu');
  Sleep(1000);
  // Выбор приложения, нажатием операции CloseFormOk
  TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST', 'CloseFormOk');
  // Ожидание клавной выборки приложения
  TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000);
  Sleep(1000);
  TestApp.Quit;
</PASCAL>