如何在JMeter中使用Groovy脚本验证API响应变量与时间差校验
JMeter Groovy脚本实现需求方案
以下是满足你需求的Groovy脚本,可直接放在JMeter的JSR223断言中使用:
// 1. 获取API响应内容 def response = prev.getResponseDataAsString() // 2. 检查响应中是否存在"witsml"字符串 if (response.contains("witsml")) { // 存在则标记断言通过 SampleResult.setSuccessful(true) SampleResult.setResponseMessage("断言通过:响应中存在'witsml'") } else { // 3. 提取startDateTime和endDateTime的值(假设响应为JSON格式,XML需调整提取逻辑) def json = new groovy.json.JsonSlurper().parseText(response) def startDateTime = json.startDateTime def endDateTime = json.endDateTime // 4. 解析时间字符串为Date对象(需匹配实际时间格式,示例格式为"yyyy-MM-dd'T'HH:mm:ss.SSSZ") def dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") def startDate = dateFormat.parse(startDateTime) def endDate = dateFormat.parse(endDateTime) // 5. 计算时间差值(单位:毫秒,可按需转换为秒/分钟) def timeDiffMs = endDate.getTime() - startDate.getTime() def timeDiffSec = timeDiffMs / 1000 // 6. 标记断言失败,并输出差值信息 SampleResult.setSuccessful(false) SampleResult.setResponseMessage("断言失败:响应中不存在'witsml'。时间差值:${timeDiffSec}秒(${timeDiffMs}毫秒)") }
关键适配说明:
- XML响应适配:如果API返回XML格式,替换JSON解析部分为XML解析逻辑:
def xml = new XmlSlurper().parseText(response) def startDateTime = xml.startDateTime.text() def endDateTime = xml.endDateTime.text() - 时间格式调整:
SimpleDateFormat的格式字符串必须和响应中时间字段的实际格式完全匹配,比如常见的"yyyy-MM-dd HH:mm:ss",需根据实际情况修改。 - 性能优化:在JSR223断言中勾选"Cache compiled script if available",提升脚本执行效率。
内容的提问来源于stack exchange,提问作者Keshav
相关产品推荐
相关产品推荐

