You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:13:10