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请求上。
提前致谢
答案 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>