SOAPUI - SOAPRequest - 展开属性以访问当前TestStep的name属性

时间:2014-03-12 16:51:05

标签: properties soapui

SoapUI提供了一种在SOAP Request中动态插入属性的通用语法。在他们的documentation中他们解释了如何访问不同的属性取决于属性范围:

#Project# - references a Project property
#TestSuite# - references a TestSuite property in the containing TestSuite
#TestCase# - references a TestCase property in the containing TestCase
#MockService# - references a MockService property in the containing MockService
#Global# - references a global property (optional)
#System# - references a system property
#Env# - references a environment variable
[TestStep name]# - references a TestStep property within the current TestCase

我的问题是我想访问当前testStep的名称,但文档说要访问TestStep属性需要名称......有另一种方法吗?比如#TestCase#TestStep#Name。我知道如何使用groovy脚本实现这一点,但在我的情况下,我想将属性直接放在SOAP请求上。

提前致谢

2 个答案:

答案 0 :(得分:3)

最后,我在documentation中找到了解决方案,使用'='前缀可以指定一个groovy脚本并访问一些上下文变量。在此上下文中, request 变量可用,并且还有 name 属性,因此可以使用以下命令访问当前的TestStep名称:

${=request.name}

答案 1 :(得分:0)

下面的示例是从TestCase获取请求并为特定元素分配值。

// get XMLHolder for request message def
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);

// grabbing the specified request
def holder = groovyUtils.getXmlHolder("Specified#Request")

holder["//*:Password"] = 'password1';

对于上面的示例,您需要知道元素的Xpath。

请注意,这可以通过多种方式完成,但您指定通过groovy脚本进行操作。它也可以通过#TestCase#属性完成。例如:

 <soapenv:Body>
  <tns:AuthenticateUser>
     <tns:Credentials>
        <tns:IntegrationID>${IntegrationID}</tns:IntegrationID>
        <tns:Username>${Username}</tns:Username>
        <tns:Password>${Password}</tns:Password>
     </tns:Credentials>
  </tns:AuthenticateUser>