vars.get用于获取jmeter用户定义的变量,CSV参数化变量,关联获取的参数等引入到JSR脚本内,引用变量名称"C_CardNo"后赋值到startNo
vars.put则是将JSR内的变量startNo输出到jmeter可以作为变量引"C_startNo"
(1)关联获取参数

(2)通过JSR处理数据
- String startNo = vars.get("C_CardNo")
- vars.put("C_startNo",startNo)
(3)后续引用

vars.get、put是对变量的传递,putObject则可以传递函数
首先在一个JSR223 Sampler定义一个函数并输出
- def Add = {a,b -> a+b}
- vars.putObject("Add",Add)
在另一个JSR223 Sampler引用
- def sum = vars.getObject("Add")
- def sumnum = sum(1,1)
- log.info("vars.getObject(\"Add\")=" + sumnum)
执行查看输出

vars和props都是jmeter的内置变量,且本质都是Map类型,不同的是
vars在当前线程中实现值或者函数的传递
props咋可以跨线程传递,属于jmeter全局属性
在线程组A中进行一个模拟赋值

在线程组B中引用并输出

- log.info("Mz_patName="+patName)
- log.error("Mz_patName="+patName)
- log.warn("Mz_patName="+patName)
jmeter内置三个级别的日志输出,对应选项中三个三个日志级别,在jmeter日志框内查看

另外可以使用“OUT.println”将内容输出到Jmeter工作台
在JSR223中使用groovy脚本是可以直接使用“println”
- OUT.println("这是JSR223 Sampler的输出OUT.println")
- println("这是JSR223 Sampler的输出println")
其输出内容会在CMD中展示

prev可以用来获取请求或响应的状态和报文信息
下面以log形式展示
-
- log.info("请求头信息========="+ prev.getRequestHeaders())
-
- log.info("响应头信息========="+ prev.getResponseHeaders())
-
- log.info("获取响应码========="+ prev.getResponseCode())
-
- log.info("响应信息=========" + prev.getResponseMessage())
-
- log.info("数据类型=========" + prev.getDataType())
-
- log.info( "内容类型=========" + prev.getContentType())
-
- log.info("媒体类型=========" + prev.getMediaType())
-
- log.info("结果文件名=========" + prev.getResultFileName())
-
- log.info("接口请求结果=========" + (prev.isSuccessful() ? "成功," : "失败,"))
-
- log.info("线程名称=========" + prev.getThreadName())
-
- log.info("请求组件自定义名称=========" + prev.getSampleLabel())
-
- log.info("请求接口=========" + prev.getUrlAsString())
-
- log.info( "响应报文体=========" + prev.getResponseDataAsString())

prev的应用举例:
- import groovy.json.JsonSlurper
- //通过prev获取响应报文
- def str = prev.getResponseDataAsString()
-
- //利用groovy.json.JsonSlurper解析报文
- def slurper = new JsonSlurper().parseText(str)
-
- String patName = slurper.data.patName