#soapui
#soapui
Вопрос:
Я новичок в SaopUI. Я создал проект с ресурсами. Мне нужно установить некоторые переменные и использовать их для запросов. Например, у меня есть токен JWT, и токен JWT будет часто меняться (тестирование для разных пользователей и разрешений = разные токены JWT) Итак, существует ли способ, как я могу установить параметр глобально для проекта и использовать его в качестве параметра заголовка для запросов в качестве «ссылки» (для этого параметра / значения)?
Спасибо!, Ян
Ответ №1:
Вероятно, вас интересуют расширения свойств
SoapUI предоставляет общий синтаксис для динамической вставки («расширения») значений свойств во время обработки. Синтаксис выглядит следующим образом:
${[scope]propertyName[#xpath-выражение]}
где scope может быть одним из следующих буквальных значений:
#Project# — ссылается на свойство проекта (ссылочные свойства в конкретном проекте SoapUI)
#TestSuite# — ссылается на свойство TestSuite в содержащем TestSuite
#TestCase# — ссылается на свойство TestCase в содержащем TestCase
#MockService# — ссылается на свойство MockService в содержащем MockService
#Global# — ссылается на глобальное свойство. Найдено на вкладке «Файл»> «Настройки»> «Глобальные свойства». Ссылочные свойства во всех проектах
#System# — ссылается на системное свойство. Найдено в Справка> Свойства системы.
#Env# — ссылается на переменную среды
[Имя шага тестирования]# — ссылается на свойство TestStep
Многие области, конечно, будут работать, только если они доступны, т. Е. Вы не можете использовать #MockService# scope в скрипте TestCase, поскольку нет содержащего MockService для доступа.
Если область действия не указана, свойство разрешается следующим образом:
Проверьте текущий контекст (например, TestRunContext) на наличие свойства с соответствующим именем
Проверьте соответствие глобального свойства
Проверьте соответствие системного свойства
Например, вы можете создать шаг groovy для настройки вашей переменной:
import groovy.json.JsonSlurper
project = testRunner.getTestCase().testSuite.getProject();
testStep = testRunner.testCase.testSteps["YourApiRequestStep"]
def Response = testStep.getProperty("response").value;
def someFieldYouWantToSave = ""
if (Response == null) {
log.error('No Response found.');
}
else {
def jSlurper = new JsonSlurper();
def json = jSlurper.parseText(Response);
if (json.get("theFieldFromTheResponse") == null){
log.error "TheFieldFromTheResponse not found in response. Please execute the teststep and try again"
} else {
someFieldYouWantToSave = json.get("theFieldFromTheResponse").toString()
testRunner.testCase.setPropertyValue("someFieldYouWantToSave", someFieldYouWantToSave)
}
}
Затем вы можете использовать свойство в запросе, например:
${#Project#theFieldFromTheResponse}