如何在Soup UI中通过断言统计JSON响应中planCode的出现次数?
在SoapUI中统计JSON响应里planCode的出现次数并实现断言的方法
嘿,我来帮你搞定这个SoapUI里的断言问题!针对你给出的JSON响应,要统计planCode的出现次数并做断言,其实通过Groovy脚本断言就能轻松实现,步骤很清晰:
第一步:添加Groovy脚本断言
在你的测试步骤上右键,选择「Add Assertion」,然后找到「Script Assertion」(Groovy脚本断言)选项,点击添加即可。第二步:编写Groovy脚本逻辑
脚本核心思路是解析响应JSON,遍历planList数组统计含planCode的元素数量,再和预期值做断言对比。这里给你适配好的脚本:// 获取当前测试步骤的响应文本 def responseContent = context.response // 用Groovy自带工具解析JSON def jsonParser = new groovy.json.JsonSlurper() def parsedJson = jsonParser.parseText(responseContent) // 统计planCode的出现次数:遍历planList,判断每个对象是否包含planCode键 def planCodeTotal = parsedJson.planList.count { it.containsKey('planCode') } // 设置你预期的次数,比如你的示例里是3次,就写3 def expectedNumber = 3 // 执行断言,不符则抛出提示信息 assert planCodeTotal == expectedNumber : "planCode出现次数不匹配,预期${expectedNumber}次,实际${planCodeTotal}次"简单解释下:
context.response能直接拿到当前步骤的响应内容;JsonSlurper是Groovy内置的JSON解析工具,把字符串转成可操作的对象;count { it.containsKey('planCode') }会逐个检查planList里的对象,统计包含planCode键的元素数量;- 最后用
assert做断言,不满足条件时会显示自定义的错误提示,方便排查。
第三步:调整预期值
根据你的实际需求修改expectedNumber的值就行,比如预期是2次就改成2。额外扩展:统计特定planCode值的出现次数
如果你需要统计某个具体planCode(比如"xx")的出现次数,只需修改统计逻辑:// 统计planCode为"xx"的出现次数 def specificPlanCount = parsedJson.planList.count { it.planCode == 'xx' } def expectedSpecific = 1 assert specificPlanCount == expectedSpecific : "planCode为xx的出现次数不匹配,预期${expectedSpecific}次,实际${specificPlanCount}次"
运行测试步骤后,如果断言通过就不会有错误提示;要是实际次数和预期不符,SoapUI会在断言结果里显示我们设置的错误信息,一目了然。
内容的提问来源于stack exchange,提问作者ramya addepalli
相关产品推荐
相关产品推荐

