SoapUI 将 XML 中的 null 与 JSON 响应中的 null 进行比较

SoapUI comparing null from XML to null from JSON response

我有一个测试用例,我连接到数据库并查询一些数据,将结果保存到属性然后向 API 发出请求并将保存的 属性 与 JSON 回应。

这有效,除非结果为空。

这是来自数据库的 XML 结果。

我将结果保存在断言的脚本中

import com.eviware.soapui.support.XmlHolder
def holder = new XmlHolder(messageExchange.responseContent)
context.testCase.setPropertyValue('SECONDARYPHONE', holder.getNodeValue('//*:SECONDARYPHONE'))
context.testCase.setPropertyValue('FAX', holder.getNodeValue('//*:FAX'))

然后在 JSON 请求 API 我得到

{
   "portalId": 87776,
   "name": "iOS Robotics",
   "address1": "Update your company address",
   "address2": "under Settings > My Company",
   "city": "Reston",
   "state": "VA",
   "zip": "20191",
   "primaryPhone": "unknown",
   "secondaryPhone": null,
   "fax": null
}

断言步骤

import net.sf.json.groovy.JsonSlurper
def jsonResponse = new JsonSlurper().parseText(messageExchange.responseContent)

log.info('Second')
log.info(context.testCase.getPropertyValue('SECONDARYPHONE'))

log.info('json')
log.info(jsonResponse.secondaryPhone)

assert jsonResponse.secondaryPhone == context.testCase.getPropertyValue('SECONDARYPHONE')

我明白了

assert jsonResponse.secondaryPhone == context.testCase.getPropertyValue('SECONDARYPHONE') | | | | | | | | | | | null | | | | com.eviware.soapui.impl.wsdl.WsdlTestCasePro@12ff4536 | | | [ThreadIndex:0, RunCount:0, ExecutionID:5cf927e7-817f-4785-9152-f35e634cfe58] | | false | net.sf.json.JSONObject@162d059c (toString() threw net.sf.json.JSONException) net.sf.json.JSONObject@2419444e (toString() threw net.sf.json.JSONException)

在这种情况下如何检查和比较空值?

这是因为,jdbc 结果具有 empty 值,而 json 具有 null 的第二个电话。

因此,检查 jdbc 任何 属性 / 属性的结果是否为空,然后检查不相等;否则检查是否相等。

另一种选择是 - 在第一个脚本中,如果元素的 jdbc 响应值为空,则将其保存为 null.