Jmeter系类(32) - JSR223(2) | Groovy常见内置函数及调用
常见内置函数及调用
获取相关函数
获取返回数据并转换为String字符串
prev.getResponseDataAsString()
例子
String Responsedata = prev.getResponseDataAsString(); //如果参数为true,则样本执行判断为成功,为false,则设置样本失败 if(Responsedata.contains(“百度一下,你就知道”)){ prev.setSuccessful(true); }else{ prev.setSuccessful(false); }
---------------------------------------------------------------------------------------------------------------------------------------
获取返回数据并保存为字节数组对象
适用于保存返回数据至本地(如下载文件等操作)
prev.getResponseData()
例子
import java.io.*; byte[] bytes = prev.getResponseData(); String file_path = “文件路径/test.html”; File file = new File(file_path); FileOutputStream out = new FileOutputStream(file); out.write(bytes); out.close();
- prev.getResponseDataAsString()与prev.getResponseData()都是获取Response Body的内容,只是返回的数据类型不同
- prev.getResponseDataAsString()返回String字符串,prev.getResponseData()返回byte[]字节数组,使用时可根据实际需要对返回数据进行处理。
---------------------------------------------------------------------------------------------------------------------------------------
获取请求头信息
String headers = prev.getRequestHeaders()
---------------------------------------------------------------------------------------------------------------------------------------
获取请求返回的code
String code = prev.getResponseCode()
---------------------------------------------------------------------------------------------------------------------------------------
获取响应信息
String responsesmessage = prev.getResponseMessage()
---------------------------------------------------------------------------------------------------------------------------------------
获取响应头信息
String responsesheader = prev.getResponseHeaders()
---------------------------------------------------------------------------------------------------------------------------------------
获取请求URL
URL url = prev.getURL() ; String url1 = prev.getUrlAsString();
---------------------------------------------------------------------------------------------------------------------------------------
设置及定义相关函数
设置响应信息Response message
prev.setResponseMessage(“这是响应信息”)
---------------------------------------------------------------------------------------------------------------------------------------
设置响应代码Response code
prev.setResponseCode(“404”)
注意
- 在beanshell脚本中可直接使用
- #ResponseMessage=“这是响应信息”;
- #ResponseCode=“404”;
- #IsSuccess=“false”;
- 但是在JSR223中不能用,而只能使用prev.set的方法
---------------------------------------------------------------------------------------------------------------------------------------
设置属性与调用属性
- 属性是所有线程公有的
- 需要注意的是,在JSR223或BeanShell中使用props.put(”name”,”value”)创建的属性
- 不能直接在当前JSR223或BeanShell中使用${__P(name,)}或${__property(name,)}进行调用
- 如果需要在当前JSR223或BeanShell中调用,需要使用props.get(“name”)方法。此处的name是属性名称,而不是随机的字符串
#当前JSR223声明并调用 props.put(“test2”,“property2”); String test1 =props.get(“test1”); String test2 = props.get(“test2”); #其他JSR223调用 ${__setProperty(test1,property1,)};
---------------------------------------------------------------------------------------------------------------------------------------
定义变量与调用变量
- 通过vars.put(“name”,”value”)方式定义的变量作用域限制为当前线程组
- 跨线程调用,使用属性定义,与props.put(”name”,”value”)
- 同样的,vars.put(“name”,”value”)创建的变量,也不能直接在当前JSR223或BeanShell中使用${name}进行调用,而是使用vars.get(“name”)方法
#var.put的变量作用域为当前线程组,跨线程用使用设置属性props.put vars.put(“name”,“jack”); String test = vars.get(“name”);
---------------------------------------------------------------------------------------------------------------------------------------
时间处理
#startTimeStr 可以指定yyyy-MM-dd HH:mm:ss 格式的时间 ${__groovy(Date.parse("yyyy-MM-dd HH:mm:ss"\,"${startTimeStr}").toCalendar().time.time,)} #指定时分秒 ${__groovy(new Date().updated(hourOfDay:20\,minute:0\,second:0).getTime(),)}
---------------------------------------------------------------------------------------------------------------------------------------
打印相关函数
打印日志 ,日志会保存在bin目录下的jmeter.log文件中
#默认支持级别为info及以上,debug级别日志由于太多,默认不支持
log.error(“This is error message”)
---------------------------------------------------------------------------------------------------------------------------------------
OUT功能等同于System.out,将在Jmeter工作台输出信息
OUT.println(“此消息将被输出到Jmeter控制台”)