JMeter使用小功能-(持续更新)
1、jmeter在同一个线程组内,uuid的复用
2、获得jMeter使用的线程总数
ctx.getThreadGroup().getNumberOfThreads()来表示活动线程总数
int threadNum=ctx.getThreadGroup().getNumThreads(); String threads = Integer.toString(threadNum); log.info("线程"+threads);
3、Jmeter中使用JSON提取器获取数组中的多个值(id)拼接
1、JSON提取器中勾选 Compute concatenation var(suffix_ALL)
直译:计算串联变量(后缀_ALL),例如我设置的变量名称itemid,那么拼接字符串变量就是 itemid_ALL
通过调试取样器可见返回的 itemid_ALL 值。
4、Jmeter-获取本月第一天和最后一天日期时间,并转换为时间戳
import java.text.SimpleDateFormat; import java.util.Date; import java.text.*; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //获取当前月第一天: Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.HOUR_OF_DAY,0); c.set(Calendar.MINUTE,0); c.set(Calendar.SECOND,0); c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 String first = format.format(c.getTime()); vars.put("first",first); //获取当月最后一天: Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); ca.set(Calendar.HOUR_OF_DAY,23); ca.set(Calendar.MINUTE,59); ca.set(Calendar.SECOND,59); String last = format.format(ca.getTime()); vars.put("last",last); //将日期格式转换为时间戳 String begin = vars.get("first"); String end = vars.get("last"); Date beginTime1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(begin); Date endTime1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(last); String beginTime = String.valueOf(beginTime1.getTime()); String endTime = String.valueOf(endTime1.getTime()); vars.put("beginTime",beginTime); vars.put("endTime",endTime);
5、将long类型转换成String类型
long num = 1234567890L; String str = String.valueOf(num); vars.put("str",str);
示例:
long today_time = ${__groovy(new java.text.SimpleDateFormat("yyyy-MM-dd").parse('${__time(yyyy-MM-dd,)}')getTime(),)}L; String str = String.valueOf(today_time); vars.put("todaytime",str);
6、JMeter中实现某个值的递减
${__intSum(${num},-1,num)}
int newid=Integer.parseInt("${__P(new_id,)}");//获取全局变量 newid--; //自减 vars.put("new_id",newid+""); //保存到变量 return newid;
多线程执行的时候不会自减,那是因为每个线程都是独立的,会重新初始化,我上面的都是在循环内执行自减的;如果要根据多个线程数达到自减的目的,可以想办法使用jmeter的函数 KaTeX parse error: Expected group after '_' at position 2: {_̲_threadNum} 得到线…{__threadNum}
int max=Integer.parseInt("${__P(new_id,)}");//获取全局变量 int threadnum= Integer.parseInt("${__threadNum}"); int newnum=max-threadnum; vars.put("new_id",newnum+""); return newnum;
7、生成随机浮点数
JMeter 如何生成指定取值范围、指定小数位数的随机浮点数
可以使用函数 __javaScript 来执行 JavaScript 代码片:
${__javaScript((Math.random() * (100)).toFixed(2) * 1,)}
以上将生成 0 ~ 100 的带两位小数的浮点数。说明如下:
- Math.random() 生成 0 ~ 1 的小数
- Math.random() * (100) 生成 0 ~ 100 的浮点数
- toFixed(2) 将生成的浮点数保留 2 位小数
如果想生成 100 ~ 200 内的带两位小数的浮点数,可以:
${__javaScript((Math.random() * (100)).toFixed(2) * 1 + 100,)}
8、日期循环递减
String date = "${__timeShift(yyyy-MM-dd,,P-${__counter(,)}D,,)}"; vars.put("date",date);
-- 可以指定开始时间 ${__timeShift(yyyy-MM-dd 00:00:00,2018-01-06 00:00:00,P-${__counter(,)}D,,)}
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。