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"}]}