Groovy在SOAP UI中生成指定范围随机数无输出无法获取返回值
问题背景
需要生成51.058993到54.152632区间内的数值,使用如下Groovy脚本在SOAP UI中执行时,既不生成对应数值,也无提示信息弹出,无法获取返回值:
double min = 51.058993 double max = 54.152632 def x = ((Math.random() * ((max - min) * 10 + 1) + min * 10) / 10.0).round(6) println(x)
故障原因
- 随机数计算逻辑错误:原脚本按10倍缩放的计算逻辑完全不符合保留6位小数的生成需求,计算结果本身就不在目标区间范围内
- SOAP UI的
println输出默认仅打印在「脚本日志(Script Log)」面板,不会主动弹出提示,未开启对应面板就看不到输出内容 - 未设置返回逻辑:脚本没有将生成的数值存入SOAP UI的属性上下文,其他测试步骤无法读取生成结果
修复方案
替换为如下可用脚本:
// 定义数值区间上下限,用BigDecimal避免浮点精度丢失 BigDecimal min = 51.058993 BigDecimal max = 54.152632 // 生成区间内随机数,保留6位小数,四舍五入 def randomValue = min + (max - min) * new Random().nextDouble() def x = randomValue.setScale(6, BigDecimal.ROUND_HALF_UP) // 输出到脚本日志,可在SOAP UI底部Script Log面板查看 log.info("生成的随机数值:${x}") // 可选:弹窗展示生成结果 // javax.swing.JOptionPane.showMessageDialog(null, "生成数值:${x}") // 可选:存入测试用例属性,供后续接口步骤调用,引用方式为${#TestCase#randomNum} testRunner.testCase.setPropertyValue("randomNum", x.toString())
验证方式
执行脚本后打开SOAP UI底部的「Script Log」面板即可查看生成的数值,如需在其他步骤使用直接引用存入的测试用例属性即可。
内容的提问来源于stack exchange,提问作者jakub dušek
相关产品推荐
相关产品推荐

