背景:JMeter3.2 + fastjson-1.2.47,使用BeanShell Assert组件做断言
步骤:直接上代码
1. 场景一:比较充值前后,从数据库中查询出的值
(这里,笔者尝试了好几种方式,因为金额在代码中是用的BigDecimal类型,使用Float或者Integer,String类型都不能正确转换)
前提:在前面的请求中,已经通过BeanShell PostProcessor保存有查询的值。详见《JMeter组件之BeanShell PostProcessor的使用》
Double cash_old = Double.valueOf("${cash_old}");
Double cash_new = Double.valueOf("${cash_new}");
Double act = cash_new - cash_old;
Double exp = Double.valueOf("1000"); // 这里的充值金额可以设置一个变量替换固定值。
if (!act.equals(exp)){
Failure = true;
FailureMessage = "充值前后的差额与充值的金额不符";
}
2. 场景二:遍历正则表达式取出的列表
前提:取出来的值存在变量名为order_list中
int len = ${order_list_matchNr}; // 使用Debug Sampler可以查看正则表达式取出的值。这是列表长度,即取出的值的个数
String exp = "12345"; // 这里的期望字符串可以设置一个变量替换固定值,如${order}。
for(int i=1; i<=len; i++){
String temp = vars.get("order_list_" + i); // 使用Debug Sampler可以看到正则表达式取出值的规律
if(exp.equals(temp))
break;
if(i == len){
Failure = true;
FailureMessage = "未找到订单号\"${order}\"";
}
}