Список передачи между тестовыми шагами Groovy (SoapUI) - PullRequest
0 голосов
/ 26 марта 2019

У меня есть один тестовый случай, который вызывается (запускается и завершается) перед каждым запуском других тестовых случаев.Это что-то вроде теста «Подготовка данных теста».Результатом этого теста является список с некоторыми элементами, список выглядит так:

def list = ['Login', 'Get Messages', 'Logout', etc.]

Список отличается при каждом запуске.Мне нужно перенести этот список из контрольного примера «подготовка тестовых данных» в другие контрольные примеры.Перенос будет между двумя скриптами Groovy.

Как перенести список между двумя шагами тестирования Groovy в SoapUI?

Ответы [ 2 ]

1 голос
/ 26 марта 2019

из первого шага вы должны вернуть список:

def list = ['Login', 'Get Messages', 'Logout']
return list

из шага 2 groovy вы можете получить этот возвращенный список

def result = context.expand( '${Groovy Script 1#result}' )

list = result.tokenize('[,] ')

list.each{
    log.info it
}

обратите внимание, что вы получаете строку, которую нужно преобразовать обратно в список (токенизировать).

Я сделал это с SOAPUI pro. Другим способом (безобразно) было бы сохранить список в пользовательском свойстве в groovy script 1 (используя testRunner.testCase.setPropertyValue ("myList", list.toString ()) и восстановить его в отличном шаге 2 (testRunner.testCase.getPropertyValue ("myList")

Я надеюсь, что это поможет

РЕДАКТИРОВАТЬ : если элементы списка содержат пробелы

это не очень чисто, и я надеюсь, что кто-то поможет предоставить что-то лучше, но вы можете сделать следующее:

list = "['Login - v1', 'Get Messages - v2', 'Logout - v1']"
list =  list.replace('\'','\"')

def jsonSlurper = new groovy.json.JsonSlurper()
list = jsonSlurper.parseText(list) 

list.each{
    log.info it
}

Alex

1 голос
/ 26 марта 2019

Насколько я понимаю:

  • У вас есть один TestCase, который вы вызываете из любого другого TestCase.
  • Я предполагаю, что это делается с помощью шага test "Run TestCase"?
  • Вы хотели бы иметь возможность передавать список строк
  • Когда я его читаю, параметры идут в одном направлении.Из «внешнего тестового примера» и обратно в вызывающий тестовый пример.Нет никакого «ввода» из каждого тестового набора в этот «внешний тестовый сценарий»?

Groovy Script в вашем «внешнем тестовом сценарии» может затем генерировать результат String, который, в свою очередь, может быть преобразован во что-то вродемассив или ArrayList строк.Это может быть строка со значениями, разделенными;

def result = ""
result += "Entry1;"
result += "Entry2;"
result += "Entry3;"
// You may want to add a line of code that removes the last ;
return result

Этот результат будет затем легко извлечен из Groovy Scripts в другом месте, добавив несколько строк кода.

Если Groovy Scriptпомещенный в другой TestCase, но в том же TestSuite, вы можете получить результат, используя:

def input = testRunner.testCase.testSuite.getTestCaseByName("Name of TestCase").getTestStepByName("Groovy Script Name").getPropertyValue("result")

Если он помещен в TestCase в другом TestSuite, вы можете использовать:

def input = testRunner.testCase.testSuite.project.getTestSuiteByName("Test Suite Name").getTestCaseByName("Test Case Name").getTestStepByName("Groovy Script Name").getPropertyValue("result")

и затем зацикливайте ввод, выполняя что-то вроде:

for (def s : input.split(";")) {
    log.info s
    // Do your stuff here
}

Надеюсь, это имеет смысл ...?:)

...