SoapUI提供了在SOAP Request中动态插入属性的通用语法。在他们的文档中,他们解释了如何根据属性作用域访问不同的属性:
#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请求上。
Thanks in advance
最后我在文档中找到了解决方案,使用'='前缀可以指定一个groovy脚本并访问一些上下文变量。在这个上下文中,request变量和它的name属性都是可用的,所以可以使用
来访问当前的TestStep名称${=request.name}
下面的例子是从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>