Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Можно ли в soapui использовать переменные ПРЯМО из файла

soapui
Теги: #<Tag:0x00007f7b64e67d78>

(Tatyana Durova) #1

Знаю, как загрузить проперти к проекту или тесткейсам и тд из файла, но тем не менее в тесткейсах всегда надо давать ссылку на тесткейсы/проект и тд (типа ${#project#my_var}).

Но может быть есть способ указывать ссылки на переменные прямо в файл?


(rmerkushin) #2

А чем проперти не угодили? И не совсем понял что подразумевается под ссылками на переменные.


(Tatyana Durova) #3

ну к примеру а что если я хочу менять конфигурацию и проперти не запуская soapui, просто в проепрти указывать путь до конректного файла с остальными пропертями и везде в других местах уже читать проперти прямо из файла, не импортируя данные файла никуда.


(rmerkushin) #4

Эмм я все же мог не так понять, но используйте groovy и *.properties или *.ini файлы.
Как работать с ini в SoapUI можете прочитать например у меня в блоге. С *.properties еще проще, т.к. это нативный формат для java\groovy:

import com.eviware.soapui.support.GroovyUtils;

// ==== Prepare properties for reading ==== //
def groovyUtils = new GroovyUtils(context);
def projectDir = groovyUtils.projectPath;
def props = new Properties();
new File(projectDir, "application.properties").withInputStream {
	stream -> props.load(stream); 
}
...
def timeout = Integer.valueOf(props["response.time"])

(Дмитрий Мирошник) #5

Как вариант, попробуйте Data Source и Property Step.
Это если у Вас Pro версия.


(Tatyana Durova) #6

Ага, смотрю на это сейчас… на самом деле думаю может внедрить datagen… property step не совсем понятно зачем придумали, можно же использовать custom property когда надо или нет?


(Tatyana Durova) #7

Есть вопрос, я делаю запрос к базе, получаю строки, как теперь мне

  1. Вывести в проперти кол-во полученных строк.
  2. Сравнить json с набором элементов с полученными строками из БД (то есть понять, какие расхождения есть с эталоном, например по ИД). Надо ли предварительно сортировать элементы в JSON? Есть ли что-то готовое для сравнения?

(Дмитрий Мирошник) #8
  1. Если Data Source не обладает таким свойством напрямую - тогда скриптом.
  2. Вы хотите сравнить пачку записей в json с пачкой записей из БД? Я подозреваю, что готовых таких решений Вы не найдёте. Здесь - только скриптовый ассершн. Если сортировка в recordset, приходящим в json, отсутствует, то я вижу только 2 варианта:
    а). Попросить разработчиков её впилить (например, по ID по возрастанию), затем использовать такую же сортировку для запроса к БД и сравнивать запись в запись по очереди.
    б). Реализовать сравнение типа запись из БД - хоть 1 запись из json + кол-во записей в json и из БД должно быть одинаковым. Если все записи нашлись + кол-во записей совпало - всё отлично. Но 2-й вариант будет работать намного медленнее 1-го. Разница будет тем больше, чем больше кол-во записей. Я бы настоятельно рекомендовал 1-й вариант, к тому же реализовать его в коде совсем нетрудно.

(Tatyana Durova) #9

У меня какой-то такой случай (если найду способ rows из sql result в json сконвентировать)

Example:
json1:[{id:5, color:red}, {id:8, color:blue}{id:9, color:blue}{id:2, color:green}]
json2:{[id:2, status:1], [id:8, status:2],[id:100, status:1]}

surplus json1 - json2 by id= [{id:5, color:red}, {id:9, color:blue}]
surplus json2 - json1 by id= {[id:100, status:1]}


(Дмитрий Мирошник) #10

Я бы делал обратным вариантом: json развернул в список объектов. Аналогично сделал бы для строк из БД.
Парсеров json более, чем дофига. Подключить данный java класс к groovy или js проблемы не представляет.