您的位置:首页 > 文旅 > 旅游 > jmeter-beanshell学习5-beanshell加减乘除运算

jmeter-beanshell学习5-beanshell加减乘除运算

2024/12/23 5:26:16 来源:https://blog.csdn.net/zhu940923/article/details/140253589  浏览:    关键词:jmeter-beanshell学习5-beanshell加减乘除运算

我用到的场景是计算金额,所以主要以金额为主,感觉这部分有点麻烦,直接写遇到的几个坑,就不演示解决的过程了。

1.最早写了个两数相减,但是小数精度容易出现问题。比如1-0.01=0.989999997这种情况,随便写的几个数字,不要认真。这种情况用BigDecimal处理。

2.计算出来的金额精度问题解决了,我自己上送的金额精度也要处理,不然计算出的金额是1.00,我上送的是1,因为是字符串对比,导致对比时候出现1不等于1.00的情况,出现报错。

3.jmeter返回报文,如果金额过大,会出现科学计数法的情况,比如返回金额1.23456789013E9这样。还需要转化成正常的数字格式。

暂时这三个坑,下面写具体方案。场景:动账前查一下余额,动账后查一下余额,两个余额相减,验证差值是不是我的交易金额。查余额应该是连接数据库的,我这里就不连了,还是用用户参数代替,点击了解jmeter连mysql数据库,动账前余额是1,动账后余额是0.99

import java.math.BigDecimal;
import java.math.RoundingMode;//动账前余额
before=vars.get("BAL_1");
//动账后余额
after=vars.get("BAL_2");BigDecimal before=new BigDecimal(before);
BigDecimal after=new BigDecimal(after);//两数相减,计算动账前后余额变化
BigDecimal fee_new= before.subtract(after);
//保留两位小数
BigDecimal fee_new=fee_new.setScale(2,RoundingMode.HALF_UP);
//转化为字符串
String fee_new1=fee_new.toString();log.info("动账前后差值:"+fee_new1);

差值算出来,再获取交易金额,加上断言,进行判断就可以了。

上面是做的减法。把加减乘除都写一个

import java.math.BigDecimal;BigDecimal a=new BigDecimal("6");
BigDecimal b=new BigDecimal("2");
BigDecimal c=a.add(b);
String c1=c.toString();
log.info("a+b="+c1);BigDecimal c=a.subtract(b);
String c1=c.toString();
log.info("a-b="+c1);BigDecimal c=a.multiply(b);
String c1=c.toString();
log.info("a*b="+c1);BigDecimal c=a.divide(b);
String c1=c.toString();
log.info("a/b="+c1);


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com