jmeter之Bean Shell Sampler使用四则运算
jmeter使用四则运算,1.可以写好java代码然后在jmeter中引用,2.直接在Bean Shell Sampler 写四则
比如:数据库或者上一个请求响应中提取的参数,需要加减乘除处理后传递给下一个接口请求参数,请求中的参数在body不能做处理,所以只能在Bean Shell Sampler或者后置处理器中处理。
事列:1.要求先获取电量和消费总金额,2.通过处理传递给下一个请求补贴金额和结算金额(公式:补贴金额=消费总金额*15%,结算金额=消费总金额-补贴金额)
图1:通过数据库查询,获取了电量和消费金额
图2:补贴金额和结算金额计算,vars.put变量仅对当前线程组内可见, 跨线程组则需要使用属性
图3:结果日志打印
图4:请求body传递,传递的数值就是图3日志中显示的结果
1 import java.text.DecimalFormat; 2 import java.math.BigDecimal; 3 4 String TotalPower = vars.get("order-TotalPower_1"); 5 log.info("充电电量------"+TotalPower); 6 String TotalMoney = vars.get("order-TotalMoney_1"); 7 log.info("总消费-----"+TotalMoney); 8 String SubsidyMoney1 = String.valueOf(Double.parseDouble(TotalMoney)*Double.parseDouble("0.15")); 9 BigDecimal b = new BigDecimal(SubsidyMoney1); 10 SubsidyMoney = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 11 SubsidyMoney2 = String.valueOf(SubsidyMoney); 12 log.info("补贴金额-----"+SubsidyMoney2); 13 SettlementMoney = String.valueOf(Double.parseDouble(TotalMoney)-Double.parseDouble(SubsidyMoney2)); 14 log.info("结算金额-----"+SettlementMoney); 15 16 vars.put("TotalPower",TotalPower); 17 vars.put("TotalMoney",TotalMoney); 18 vars.put("SubsidyMoney",SubsidyMoney2.toString()); 19 vars.put("SettlementMoney1",SettlementMoney.toString());