С помощью командной строки TestComplete можно задать множество различных параметров (показывать или нет splash screen, закрывать ли TestComplete после прогона тестов, экспорт лога и т.п.). Однако что делать, если мы хотим передать в скрипты какую-то дополнительную информацию извне?
Это можно сделать с помощью дополнительных параметров и их парсинга в скриптах.
Предположим, у нас есть несколько конфигураций Name Mapping, каждая из которых соответсвует определенному языку приложения (Russian, English, French и т.п.). Мы хотим иметь возможность в командной строке указывать, какую из конфигураций использовать при запуске тестов.
Пример командной строки для этого будет выглядеть так:
TestComplete.exe C:\MyProjectsMySuite.pjs /r /p:MyProj /NameMappingConfig:Russian
Жирным выделен параметр, который мы добавили для задания необходимой конфигурации.
Теперь напишем функцию, которая будет перебирать все параметры и искать среди них параметр NameMappingConfig:
function getNameMappingConfig()
{
var nmConfig = 'English';
for(var i = 0; i <= BuiltIn.ParamCount(); i++)
{
var param = BuiltIn.ParamStr(i);
if(aqString.Find(param, 'NameMappingConfig') > -1)
{
nmConfig = param.split(':')[1];
break;
}
}
Log.Message('Using Name Mapping Configuration ' + nmConfig);
return nmConfig;
}
С помощью метода BuiltIn.ParamCount мы получаем количество параметров и затем в цикле берем каждый из них с помощью метода BuiltIn.ParamStr. Далее с помощью метода aqString.Find мы проверяем, есть ли в параметре слово NameMappingConfig, и если есть – вытаскиваем из него всё, что находится после двоеточия. Для этого мы с помощью метода split превращаем строку в массив (указывая двоеточие в качестве разделителя), затем берем первый элемент массива.
Теперь зададим активную конфигурацию с помощью написанной функции:
NameMapping.CurrentConfigurationName = getNameMappingConfig();
Обратите внимание на следующие нюансы:
- ParamCount возвращает кол-во параметров не учитывая самый первый из них: путь к самому TestComplete. В то время как ParamStr(0) возвращает именно путь к TestComplete. Поэтому в цикле мы используем <= в качестве условия выхода. Если бы мы использовали знак <, то последний параметр мы бы не получили.
- В самом начале функции мы задаем конфигурацию по умолчанию. Она будет использована, если другое значение не будет передано в командной строке.
- Перед выходом из функции мы логируем сделанный выбор. Это необходимо для того, чтобы в случае ошибки и анализа лога, мы смогли бы точно восстановить логику работы скрипта.
Методы ParamStr и ParamCount позволяют работать только с командной строкой самого TestComplete. Если же вы захотите работать таким образом с параметрами других процессов, придется написать более сложный парсер командной строки. Пример такого парсинга можно найти в главе 4 книги TestComplete Cookbook.