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());