如何使用脚本断言 - SoapUI在自定义属性中存储JDBC Request响应中的特定值?

时间:2018-02-08 09:35:46

标签: java groovy automation soapui

在我的testSuite中,已添加了四个请求,最后一步是 JdbcRequest

运行此 JdbcRequest 步骤后,我正在尝试从响应中获取电话号码。为此,我在 JdbcRequest 步骤的脚本断言中编写了以下脚本。

import groovy.util.*
import groovy.lang.*
import com.eviware.soapui.model.testsuite.*

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def responseHolder = groovyUtils.getXmlHolder( context.responseAsXml )

def pNo = responseHolder.getNodeValue("//*:Results/*:ResultSet/*:Row/*:PHONE_NUMBER")
log.info pNo 

testRunner.testCase.setPropertyValue("JdbcPhoneNo",pNo) // Not storing in the property

我将使用 Groovy脚本执行这三个请求,即第一步。 完成执行后( JdbcRequest ),它不会将电话号码存储在脚本断言中,并显示为 NULL 。我尝试了以下方法,但没有运气。

//def x = messageExchange.modelItem.testStep.testCase.setPropertyValue("JdbcPhoneNo",pNo)
//context.testCase.project.setPropertyValue("JdbcPhoneNo",pNo)
//context.testCase.testSuite.setPropertyValue("JdbcPhoneNo",pNo)
//testRunner.testCase.testSuite.project.setPropertyValue("JdbcPhoneNo",pNo)

请你的建议。

由于

2 个答案:

答案 0 :(得分:0)

你快到了......

下面的行是一个set命令,是一个要使用的命令,但是你要将它分配给一个var ......

//def x = messageExchange.modelItem.testStep.testCase.setPropertyValue("JdbcPhoneNo",pNo)

相反,将其更改为

messageExchange.modelItem.testStep.testCase.setPropertyValue("JdbcPhoneNo",pNo)

答案 1 :(得分:0)

我得到了上述问题的答案。

我喜欢这个

def responseHolder = groovyUtils.getXmlHolder(  messageExchange.responseContent   )

而不是def responseHolder = groovyUtils.getXmlHolder( context.responseAsXml )

该值将存储到每次执行的属性中。