Я использую soapUI 3.6.1 и хочу протестировать SOAP-интерфейс с такой структурой теста:
MyWorkspace
MyProject
TestSuite
TestCase Single
TestStep 1
TestCase Loop
Properties #1
Groovy #1
Run TestCase Single
Properties #2
Groovy #2
Run TestCase Single
TestCase Single
содержит несколько запросов, которые должны быть выполнены с помощьютот же идентификатор аккаунта.TestCase Loop
должен вызывать TestCase Single
, используя разные идентификаторы аккаунта.Properties *
должен изменить идентификатор учетной записи.
MyProject
имеет свойство accountId
, настроенное со значением 1234. Это должно работать как значение по умолчанию для одиночного тестирования тестовых случаев, т.е.TestCase Single
.
Properties #1
и Properties #2
имеют accountId
, заданные различными значениями.
Намерение состоит в том, чтобы разрешить выполнение TestStep 1
отдельно или как часть TestCase Loop
.
TestStep 1
имеет общее SOAP-тело, в котором параметр, отправляемый веб-службе, имеет следующий параметр:
<accId>${='${#accountId}' != '' ? '${#accountId}' : ${#Project#accountId}}</accId>
Groovy #1
и Groovy #2
выглядят так:
log.info('Using account ' + (context.expand('${#accountId}') != '' ? context.expand('${#accountId}') : context.expand('${#Project#accountId}')));
Моя проблема сейчас в том, что Groovy-скрипт записывает правильное значение accountId
(т. Е. Значение внутри цикла), но TestStep 1
всегда использует значение из проекта.Я хочу, чтобы TestStep 1
использовал значение цикла.
В целях отладки я также поместил в TestStep 1
следующее:
<!--
{#Project#accountId}: ${#Project#accountId}
{#TestSuite#accountId}: ${#TestSuite#accountId}
{#TestRunContext#accountId}: ${#TestRunContext#accountId}
{#TestRun#accountId}: ${#TestRun#accountId}
{#TestCase#accountId}: ${#TestCase#accountId}
{#TestStep#accountId}: ${#TestStep#accountId}
{#MockService#accountId}: ${#MockService#accountId}
{#Global#accountId}: ${#Global#accountId}
{#System#accountId}: ${#System#accountId}
{#Env#accountId}: ${#Env#accountId}
{#accountId}: ${#accountId}
context.accountId: ${=context.accountId}
modelItem.accountId: ${=modelItem.accountId}
request.accountId: ${=request.accountId}
context.expand(): ${=context.expand('${#accountId}')}
-->
Я проследил сетевой трафик с помощью Wireshark и заметилчто только ${#Project#accountId}
вернул значение.
Что я здесь не так делаю?Как мне нужно кодировать <accId>
-элемент для отправки правильного значения на удаленный хост?