我使用的是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 SingleTestCase Single包含一堆请求,这些请求应该使用相同的account-id执行。TestCase Loop应该使用不同的帐户ids调用TestCase Single。Properties *应该更改帐户id。
MyProject的属性accountId的设置值为1234。这应该作为测试用例的单个测试的默认值,即TestCase Single。
Properties #1和Properties #2为accountId指定了不同的值。
其目的是允许TestStep 1单独执行或作为TestCase Loop的一部分执行。
TestStep 1有一个公共的SOAP-body,其中以下是发送到web服务的参数:
<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>-element进行编码才能将正确的值发送到远程主机?
发布于 2011-03-17 15:27:15
现在我重新考虑了这个问题,我想我找到了最好的解决方案,即使我不明白为什么我最初的尝试不起作用。
我将结构更改为:
MyWorkspace
MyProject
TestSuite
TestCase Single
TestStep 1
TestCase Loop
Groovy #1
Run TestCase Single
Groovy #2
Run TestCase Single换句话说,我去掉了Properties,将逻辑转移到了Groovies中
context.getTestCase().getTestSuite().setPropertyValue("accountId_loop", "1720");和TestStep 1中的适当行
<accId>${='${#TestSuite#accountId_loop}' != '' ? '${#TestSuite#accountId_loop}' : ${#MyProject#accountId}}</accId>https://stackoverflow.com/questions/4659093
复制相似问题