Jexl-тесты#
В меню Настройки и сервисы - Сервисы Jexl - Jexl-тесты можно писать и выполнять jexl-тесты.
Создание#
При создании jexl-теста ему необходимо задать план, который будет состоять из разных шагов, выполняемых друг за другом. Для каждого шага необходимо задать наименование и текст скрипта, который должен выполниться. Порядковый номер шага проставится автоматически.
На закладке «Глобальные переменные» можно задать переменные, к которым можно обращаться в тесте через методы
tst.setGlobalVar и tst.getGlobalVar. Для их создания необходимо указать системное имя переменной, которая должна быть уникальна для теста,
и ее значение в виде jexl-скрипта, который будет выполняться перед стартом теста.
Доступные методы#
tst.setVar#
Записывает в контекст выполнения jexl-теста переданное значение. Информация об изменении переменной записывается в лог выполнения теста с типом SETVAR.
Пример:
tst.setVar("param_name", param_value); //param_name - имя параметра, param_value - значение параметра
tst.getVar#
Достает из контекста значение параметра по его имени.
Пример:
var p = tst.getVar("param_name"); //param_name - имя параметра
tst.setGlobalVar#
Записывает в глобальные переменные выполнения jexl-теста переданное значение. Доступ к этим переменным есть на любом шаге теста, без необходимости получать нужный контекст.
Информация об изменении переменной записывается в лог выполнения теста с типом SETVAR.
Пример:
tst.setGlobalVar("param_name", param_value); //param_name - имя параметра, param_value - значение параметра
tst.getGlobalVar#
Получает значение глобальной переменной по ее имени.
Пример:
var p = tst.getGlobalVar("param_name"); //param_name - имя параметра
tst.findParentContext#
Возвращает контекст предыдущего шага выполнения теста. Из него можно получить параметры, записанные в контекст на предыдущем шаге.
Пример:
var parent = tst.findParentContext();
var parentParam = parent.getVar("param_name");
tst.info#
Записывает в лог выполнения теста переданный текст с типом INFO.
Пример:
tst.info("Текст с информацией");
tst.warning#
Записывает в лог выполнения теста переданный текст с типом WARNING.
Пример:
tst.warning("Текст с предупреждением");
tst.error#
Записывает в лог выполнения теста переданный текст с типом ERROR.
Пример:
tst.error("Текст с ошибкой");
tst.raise#
Выбрасывает ошибку с переданным текстом, а также записывает ее в лог выполнения с типом ERROR.
Пример:
tst.raise("Текст с ошибкой");
tst.assertTrue#
Проверят, что переданное условие истинно. Если оно ложно, то прекращает выполнение теста и записывает в лог выполнения ошибку. Если выполняется группа тестов и проверка не пройдена, то переходит к следующему тесту.
Пример:
tst.assertTrue(1 == 2); //запишет в лог "assertTrue не прошло проверку"
tst.assertTrue(1 == 2, "Число 1 не равно числу 2"); //запишет в лог переданный текст "Число 1 не равно числу 2"
tst.shouldBeTrue#
Проверят, что переданное условие истинно. Если оно ложно, то записывает в лог выполнения ошибку.
Пример:
tst.shouldBeTrue(1 == 2); //запишет в лог "shouldBeTrue не прошло проверку"
tst.shouldBeTrue(1 == 2, "Число 1 не равно числу 2"); //запишет в лог переданный текст "Число 1 не равно числу 2"
tst.sqlRows#
Возвращает количество строк, полученных в результате выполнения переданного запроса.
Пример:
var count = tst.sqlRows(`select t.id from RplTst_AllDbTypes t where t.idObjectType = 120`);
Выполнение#
Выполнение теста осуществляется в помощью операции Выполнить тест в карточке теста или списке тестов. Для выполнения тестов целой группы необходимо в списке тестов выполнить операцию Выполнение всех тестов текущей группы.
Выполнение с помощью Rest сервиса:
Выполнение тестов также возможно с помощью Rest сервиса.
Путь для выполнения одиночного теста: http://{имя_сервера}/app/sys/rest/ss/pkg/Bts_TestPkg/runSingleTest
Путь для выполнения группы тестов: http://{имя_сервера}/app/sys/rest/ss/pkg/Bts_TestPkg/runTestForGroup
Тело обоих запросов является json-объектом, который состоит из ключа name и его значения, в виде системного имени теста или группы, соответственно.
Запрос выполнения одиночного теста возвращает json-объект, который содержит в себе следующие параметры: имя теста name,
наличие ошибок hasErrors, наличие предупреждений hasWarnings, количество ошибок countErrors и
количество предупреждений countWarnings.
Пример для одиночного теста:
//пример обращения
curl -H Database:pgDev -u admin:admin -d {\"name\":\"PRS_PurchReqTest\"} -H "Content-Type: application/json" -X POST http://localhost:8080/app/sys/rest/ss/pkg/Bts_TestPkg/runSingleTest
//пример результата
{"hasErrors":true,"hasWarnings":false,"countErrors":1,"countWarnings":0,"name":"Тест заявок на закупку услуг"}
Запрос выполнения группы тестов возвращает json-объект, который содержит в себе следующие параметры:
наличие ошибок hasErrors, наличие предупреждений hasWarnings, количество ошибок countErrors,
количество предупреждений countWarnings и результаты выполнения всех тестов tests в виде массива json-объектов
таких же, как при выполнении одиночного теста.
//пример обращения
curl -H Database:pgDev -u admin:admin -d {\"name\":\"Test1\"} -H "Content-Type: application/json" -X POST http://localhost:8080/app/sys/rest/ss/pkg/Bts_TestPkg/runTestForGroup
//пример результата
{"hasErrors":true,"hasWarnings":false,"countErrors":2,"countWarnings":0,"tests":[{"hasErrors":false,"hasWarnings":false,"countErrors":0,"countWarnings":0,"name":"test_ok"},{"hasErrors":true,"hasWarnings":false,"countErrors":1,"countWarnings":0,"name":"test333"},{"hasErrors":true,"hasWarnings":false,"countErrors":1,"countWarnings":0,"name":"test22"}]}