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

How to store particular value from the JDBC Request response in the Custom Property using Script Assertion - SoapUI?

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

在 运行 这个 JdbcRequest 步骤之后,我试图从回复。为此,我在 JdbcRequest 步骤的 Script Assertion 中编写了以下脚本。

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),它不存储phone数字Script Assertion 并显示为 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)

请提建议。

谢谢

你快到了....

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

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

改为

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

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

我是这样用的

def responseHolder = groovyUtils.getXmlHolder(  messageExchange.responseContent   )

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

每次执行时,该值都会存储到 属性 中。