我正在尝试使用脚本断言或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。
感谢。
答案 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请求左下角的断言标签面板:
然后右键单击它并选择添加断言:
在新面板中,从左侧菜单中选择 Script ,然后在右侧选项中选择 Script Assertion :
最后使用提供的代码并进行检查:)
: