Ich verwende soapUI 3.6.1 und ich möchte wie diese eine SOAP-Schnittstelle mit einer Teststruktur testen:soapUI: Immobilie nicht in Immobilien Expansion in einem Testfall verwendet
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
enthält ein Bündel von Anfragen, die mit derselben Account-ID ausgeführt werden sollen. TestCase Loop
soll TestCase Single
mit verschiedenen Account-IDs aufrufen. Die Properties *
sollen die Konto-ID ändern.
MyProject
hat eine Eigenschaft accountId
eingerichtet mit Wert 1234. Dies sollte als Standardwert für einzelne Tests der Testfälle funktionieren, d. H. TestCase Single
.
Properties #1
und Properties #2
haben accountId
mit verschiedenen Werten angegeben.
Es soll TestStep 1
allein oder als Teil von TestCase Loop
ausgeführt werden.
TestStep 1
hat einen gemeinsamen SOAP-Körpers, wo die folgenden ein Parameter an den Web-Service gesendet wird:
<accId>${='${#accountId}' != '' ? '${#accountId}' : ${#Project#accountId}}</accId>
Groovy #1
und Groovy #2
sieht wie folgt aus:
log.info('Using account ' + (context.expand('${#accountId}') != '' ? context.expand('${#accountId}') : context.expand('${#Project#accountId}')));
Mein Problem ist jetzt, dass Das Groovy-Skript schreibt den korrekten Wert accountId
(dh den innerhalb der Schleife), aber TestStep 1
verwendet immer den Wert aus dem Projekt. Ich möchte TestStep 1
den Wert der Schleife verwenden.
Für Debugging-Zwecke Ich habe auch die folgenden in 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}')}
-->
ich den Netzwerkverkehr mit Wireshark verfolgt und festgestellt, dass nur ${#Project#accountId}
Wert zurückgegeben.
Was mache ich hier falsch? Wie muss ich das <accId>
-Element codieren, um den korrekten Wert an den Remote-Host zu senden?