messageExchange 对象在 JDBC Teststep 断言上不可用,但在 SOAP 请求断言上可用

messageExchange object not available on JDBC Teststep assertion but available on SOAP Request assertions

我的动机是断言来自 JDBC 调用的响应以及我存储在 'Properties' 测试步骤中的 XML 文档。我需要验证一些值。

我正在尝试对 SoapUI 5.2.1 中的 JDBC 测试步骤使用脚本类型断言。我之前也为 'SOAP Request' 测试步骤创建了脚本类型断言,它们工作正常。在 JDBC 的情况下,当我使用 :

def testCase = messageExchange.modelItem.testCase;

我收到错误

"Cannot get property 'modelItem' on null object".

在 SOAP 请求的脚本断言中使用了同样的东西,并且工作正常。不知何故,隐式对象 'messageExchange' 不仅可用于 JDBC 测试步骤,而且它会抛出 NPE。

messageExchange 对象不可用是不正确的。因为,如果你看到 Script Assertion 编辑器的右上角,很明显 messageExchange 对象可用(如下所示)。

Script is invoked with log, context, and messageExchange variables

您是否 运行 script assertion 实际上没有 运行 jdbc 测试步骤?

在脚本断言中,可以使用以下 groovy 语句访问测试用例属性:

def propValue = context.testCase.getPropertyValue('PROPERTY_NAME')
log.info "Property value is : ${propValue}"

上面的相同语句应该在 Groovy Script 测试步骤和 Script Assertion 中都有效。

如果你需要测试用例对象,那么

变化自:

def testCase = messageExchange.modelItem.testCase;

收件人:

def testCase = context.testCase

编辑:

根据评论,问题的作者要求从 Script Assertion 获得 JDBC 回复。

尽管变量 messageExchangeScript Assertion 中可用,看起来它仅适用于 SoapRest 输入步骤。

但是,用户仍然可以使用以下语句访问 Script Assertion 中的响应:

import groovy.xml.*    
log.info context.responseAsXml
def responseSlurper = new XmlSlurper().parseText(context.responseAsXml)
log.info responseSlurper.ResultSet.Row.size()