首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >soapUI:在测试用例的属性扩展中未使用的属性

soapUI:在测试用例的属性扩展中未使用的属性
EN

Stack Overflow用户
提问于 2011-01-11 23:13:06
回答 1查看 2.8K关注 0票数 1

我使用的是soapUI 3.6.1,我想用下面这样的测试结构测试SOAP接口:

代码语言:javascript
复制
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包含一堆请求,这些请求应该使用相同的account-id执行。TestCase Loop应该使用不同的帐户ids调用TestCase SingleProperties *应该更改帐户id。

MyProject的属性accountId的设置值为1234。这应该作为测试用例的单个测试的默认值,即TestCase Single

Properties #1Properties #2accountId指定了不同的值。

其目的是允许TestStep 1单独执行或作为TestCase Loop的一部分执行。

TestStep 1有一个公共的SOAP-body,其中以下是发送到web服务的参数:

代码语言:javascript
复制
     <accId>${='${#accountId}' != '' ? '${#accountId}' : ${#Project#accountId}}</accId>

Groovy #1Groovy #2如下所示:

代码语言:javascript
复制
log.info('Using account ' + (context.expand('${#accountId}') != '' ? context.expand('${#accountId}') : context.expand('${#Project#accountId}')));

我现在的问题是,Groovy脚本编写了正确的accountId值(即循环中的值),但TestStep 1总是使用项目中的值。我希望TestStep 1使用循环的值。

出于调试目的,我还将以下代码放入TestStep 1

代码语言:javascript
复制
<!--
{#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进行编码才能将正确的值发送到远程主机?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-17 15:27:15

现在我重新考虑了这个问题,我想我找到了最好的解决方案,即使我不明白为什么我最初的尝试不起作用。

我将结构更改为:

代码语言:javascript
复制
MyWorkspace
    MyProject
        TestSuite
            TestCase Single
                TestStep 1
            TestCase Loop
                Groovy #1
                Run TestCase Single
                Groovy #2
                Run TestCase Single

换句话说,我去掉了Properties,将逻辑转移到了Groovies

代码语言:javascript
复制
context.getTestCase().getTestSuite().setPropertyValue("accountId_loop", "1720");

TestStep 1中的适当行

代码语言:javascript
复制
     <accId>${='${#TestSuite#accountId_loop}' != '' ? '${#TestSuite#accountId_loop}' : ${#MyProject#accountId}}</accId>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4659093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档