SoapUI — установите токен JWT в качестве глобального параметра проекта

#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}