美文网首页
Jmeter-JSR223常用脚本

Jmeter-JSR223常用脚本

作者: E术家 | 来源:发表于2023-07-27 11:11 被阅读0次

数据获取相关

接口请求后置

import groovy.json.JsonSlurper // 导入json解析模块

requestName = prev.getSampleLabel() // 获取请求的名称
responseCode = prev.getResponseCode() // 获取请求的响应码
responseHeader = prev.getResponseHeaders() // 获取请求的headers信息
responseDataStr = prev.getResponseDataAsString() // 以string的形式返回请求结果
jsonSlurper = new JsonSlurper() // 生成一个json对象
jsondata = jsonSlurper.parseText(responseDataStr) // json对象数据化,可以通过key值获取对应value

log.info("------------------------------")
log.info("requestName: " + requestName)
log.info("responseCode: " + responseCode)
log.info("responseHeader: " + responseHeader)
log.info("responseDataStr: " + responseDataStr)
log.info("jsondata_relay_id: "+ jsondata["relay_id"]) 
log.info("------------------------------")

解析SQL查询

import groovy.json.JsonSlurper
import groovy.json.JsonOutput

jsonString = JsonOutput.toJson(vars.getObject("data")) // 数据转json字符串
jsonSlurper = new JsonSlurper()
jsondata = jsonSlurper.parseText(jsonString) // json对象数据化,可以通过key值获取对应value

断言相关

responseCode = prev.getResponseCode() // 获取请求的状态码
if (responseCode == "200") { // 对状态码进行断言 判定是否是200
    AssertionResult.setFailure(false) // 断言成功
} else {
    AssertionResult.setFailure(true) // 断言失败
    AssertionResult.setFailureMessage("response Code is not 200") // 输出断言失败对应的信息
}

线程相关

// 获取线程总数的方法
num1 = ctx.getThreadGroup().getNumThreads() // JSR223脚本
num2 = ${__groovy(org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads())} // 函数调用
num3 = ${__groovy(ctx.getThreadGroup().getNumThreads(),)} // 组合使用

currentThread = ${__threadNum} // 获取当前线程号

Cookie相关

import org.apache.jmeter.protocol.http.control.Cookie
import org.apache.jmeter.protocol.http.control.CookieManager

cookieManager = sampler.getCookieManager()
size = cookieManager.getCookies().size()
for (i in 0..<size) {
    def cookie = cookieManager.get(i)
    if ("COOKIENAME" == cookie.getName()) {
        vars.put("sessionName", cookie.getName())
        vars.put("sessionValue", cookie.getValue())
        vars.put("sessionDomain", cookie.getDomain())
        vars.put("sessionPath", cookie.getPath())
    } else {
        log.error("-------Cookies : " + cookie.getName() + "----------- " + cookie.getValue())
    }
}

数据存储相关

property全线程共享数据

import org.apache.jmeter.util.JMeterUtils

JMeterUtils.setProperty("key", "value")  // 仅支持string类型数据 
JMeterUtils.getProperty("key")

vars局部变量,仅在当前线程组生效,可以通过${key}调用

responseCode = prev.getResponseCode()
vars.put("login_status", responseCode) // 设置
code = vars.get("login_status") // 读取

props全局变量,可以通过${key}调用

vars.props("token", "${token}") // 设置
token = props.get("token") // 读取

ps:因Jmeter中的线程组默认是并行的,所以如果全局变量依赖某个线程处理后的结果,需要在测试计划中额外设置独立运行


设置后所有线程组为顺序执行

相关文章

  • IDA Python 脚本(四)

    常用的脚本 调用示例

  • 常用脚本

    删除源代码 find . -name "*.cpp" -type f -print -exec rm -rf {}...

  • 常用脚本

    ONLOAD 假如我们希望某个函数在网页加载完毕之后就立即执行。网页加载完毕时会触发一个onload事件,所以我们...

  • 常用脚本

    0x01 rsa private key encrypt java to python pkcs8 to pkcs...

  • 常用脚本

    CentOS开机自启办法 自定义命令 宝塔面板 v2ray tcp.sh gost.sh aria2.sh

  • 常用脚本

    *.nginx转发websocket请求配置方式 代理服务器就可以转发224服务器的推送数据了。 *.centos...

  • 常用脚本

    一、mysql备份 备份shell脚本 数据库连接配置文件 把备份脚本放到 /etc/cron.daily 下,就...

  • SpringBoot在Redis中执行Lua脚本

    SpringBoot执行Lua脚本 之前基本上完成了Lua脚本在Redis中使用的常用方式以及常用指令,在项目使用...

  • Frida Snippet

    记录常用的Frida的脚本 template

  • 几个常用的Linux监控脚本

    几个常用的Linux监控脚本 本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间...

网友评论

      本文标题:Jmeter-JSR223常用脚本

      本文链接:https://www.haomeiwen.com/subject/nfulpdtx.html