В прошлой статье мы рассмотрели пример того, как с помощью классов JScript можно расширить стандартную библиотеку TestComplete. В этой статье мы сделаем то же самое с помощью скриптовых плагинов (Script Extension).
Script Extension’ы используются для создания пользовательских объектов и проверок (чекпоинтов). При этом, в отличие от обычных Extension’ов, они пишутся на скриптовых языках (JScript или VBScript, а не C++/Delphi), а потому тестировщикам их создавать проще.
В нашем примере мы будем создавать объект-обёртку для стандартного объекта aqString, в который добавим методы Left и Right (точно так же, как в предыдущей статье мы создали аналогичный класс языковыми средствами JScript).
Создание кода объекта
- Для начала зайдем в свойства проекта (правый клик на имени проекта, Edit | Properties), выберем группу опций General и установим параметр Character encoding равным UTF-8 или ANSI.
- Затем создадим новый Unit, дав ему имя, не совпадающее с будущим именем объекта. Объект мы хотим назвать aqStr, поэтому модуль назовём aqStrUnit.
- В этом модуле создадим две функции с именами, похожими на имена методов. Я предпочитаю называть их точно так же (т.е. функция с именем Left будет соответствовать методу Left и т.д.), хотя имена функций могут отличаться от имён методов, а их соответствие друг другу устанавливается отдельно (см. ниже). В результате мы получим следующие функции:
function Left(str, len)
{
return aqString.SubString(str, 0, len);
}
function Right(str, len)
{
var startPosition = aqString.GetLength(str) - len;
return aqString.SubString(str, startPosition, len);
}
- Теперь для каждого метода стандартного объекта aqString создадим функцию-обёртку, чтобы наш новый объект aqStr также имел такие методы. Например:
function ToLower(str)
{
return aqString.ToLower(str);
}
function ToUpper(str)
{
return aqString.ToUpper(str);
}
- И, наконец, для каждого свойства объекта создадим пару функций для считывания и записи этого свойства (getter и setter):
function GetListSeparator()
{
return aqString.ListSeparator;
}
function SetListSeparator(sep)
{
aqString.ListSeparator = sep;
}
И таким образом мы описываем все методы (новые и существующие).
Создание файла-описания объекта
Дальше необходимо создать файл description.xml, в котором мы опишем наш объект. Выглядеть он будет так:
<?xml version="1.0" encoding="UTF-8"?> <ScriptExtensionGroup> <Category Name="Runtime Objects"> <ScriptExtension Name="aqString Wrapper" Author="Gennadiy Alpaev" Version="1.0" HomePage="www.tcblog.ru"> <Script Name="aqStrUnit.js"> <RuntimeObject Name="aqStr"> <Method Name="Left" Routine="Left"> Returns a specified number of characters from the left side of a string </Method> <Method Name="Right" Routine="Right"> Returns a specified number of characters from the right side of a string </Method> <Method Name="ToLower" Routine="ToLower"> Converts the specified string to lower case </Method> <Property Name="ListSeparator" GetRoutine="GetListSeparator" SetRoutine="SetListSeparator"> Specifies a character or string used as a list item separator </Property> <Description> The aqStr object lets you perform various operations on string values </Description> </RuntimeObject> </Script> </ScriptExtension> </Category> </ScriptExtensionGroup>
В этом файле мы описываем имя объекта (aqStr), все его свойства и методы (обратите внимание, что имена методов и соответствующих им функций могут не совпадать). Создавать файл можно в любом редакторе (в т.ч. в TestComplete), главное, чтобы кодировка совпадала с кодировкой модуля с кодом (в нашем случае UTF-8).
Упаковка
- Теперь необходимо поместить оба файла (aqStrUnit.sj и description.xml) в одну папку, после чего переименовать файл aqStrUnit.sj, дав ему расширение js вместо стандартного sj, используемого в TestComplete. Если вы создавали файл с кодом не в TestComplete, это можно сделать сразу, мы же просто поменяем расширение на этом шаге.
- Дальше запаковываем оба файла в zip-архив с любым именем, после чего изменить расширение zip на tcx (это необходимо для того, чтобы TestComplete распознал архив как Script Extension).
Установка плагина
Для установки созданного плагина необходимо:
- Скопировать файл в папку <TestComplete Folder>\Bin\Extensions\ScriptExtensions (например, для TestComplete 7 полный путь выглядит так: “C:\Program Files\Automated QA\TestComplete 7\Bin\Extensions\ScriptExtensions”).
- Дважды кликнуть по файлу в Explorer’e и нажать OK в окне Installing Extension.

- В TestComplete выбрать пункт меню File | Install Script Extensions.
- Нажать Reload, если плагин не виден в списке доступных плагинов, после чего включить созданный плагин и нажать OK.
Теперь в скриптах мы можем использовать созданный объект aqStr, в котором будут как созданные нами методы, так и стандартные методы объекта aqString. В редакторе работа с нашим объектом будет выглядеть так:
Чтобы слово aqStr выглядело так же, как в этом примере (выделенное полужирным синим шрифтом), необходимо добавить его в список пользовательских ключевых слов, как это описано в статье ранее.
Итоги
У этого подхода, как и у предыдущего, рассмотренного нами, имеются как достоинства, так и недостатки.
Достоинства:
- не зависит от языка программирования (плагины, созданные с помощью JScript, можно также использовать в проектах VBScript и DelphiScript)
- удобен в использовании при написании кода (автозаполнение и подсказки в редакторе)
Недостатки:
- сложность создания и сопровождения
- некоторые возможности недоступны при использовании Script Extensions (использование нескольких модулей невозможно, некоторые объекты — например, TestedApps — недоступны, и т.п.)