如何检查值是否在soapui中的XML响应中以特定格式显示

时间:2016-04-18 19:53:46

标签: groovy soapui

我正在尝试使用脚本断言或groovy代码来检查xml响应中元素下的值是否以特定格式退出。

示例回复:

                 <ns5:price>99.99</ns5:price>
                 <ns5:date>2016-04-04</ns5:date>
                 <ns5:quantity>1</ns5:quantity>

例如,我想检查是否存在任何价格且格式为5,4,日期相同,以查看格式为yyyy-mm-dd的日期和数量是否为0

所有值都是动态的。

我想知道我们是否可以使用脚本断言,或者可以使用soap ui pro点击并点击。

我只是在学习soapui pro和groovy。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以在 SOAP testStep 中创建脚本断言并在那里进行验证。在脚本断言中,您可以使用XmlSlurper解析响应,然后使用findAll获取所需的节点并执行所有断言。您可以使用以下内容执行此操作:

// from script assertion get the response 
def response = messageExchange.getResponseContent()
// parse the XML
def xml = new XmlSlurper().parseText(response)
// get all prices
def prices = xml.'**'.findAll { it.name() == 'price' }
// check that each one has at "max 5 digits.max 4 digits"
prices.each { assert it ==~ /\d{0,5}\.\d{0,4}/ }
// get all dates
def date = xml.'**'.findAll { it.name() == 'date' }
// check the date has yyyy-MM-dd format
date.each { assert it  ==~ /\d{4}\-\d{2}\-\d{2}/ }
// get all quantities
def quantity = xml.'**'.findAll { it.name() == 'quantity' }
// check that all quantities are > 0
quantity.each { assert it.text().toInteger() > 0 }

注意:要为您的请求添加脚本断言,请点击 SOAP请求左下角的断言标签面板:

enter image description here

然后右键单击它并选择添加断言

enter image description here

在新面板中,从左侧菜单中选择 Script ,然后在右侧选项中选择 Script Assertion

enter image description here

最后使用提供的代码并进行检查:)

enter image description here