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


写的匆忙,忘了加科学计数法转化,如果返回结果是科学计数法的情况,一般要转化

直接用正则表达式把bal_ar取出来,然后处理

bal_ar=vars.get("bal_ar");
BigDecimal bal_ar1=new BigDecimal(bal_ar);
BigDecimal bal_ar1=bal_ar1.setScale(2,RoundingMode.HALF_UP);
String bal_ar2=bal_ar1.toPlainString();
log.info("科学计数法转化以后:"+bal_ar2);

String bal_ar2=bal_ar1.toPlainString();这一行就是把科学计数法转成正常数值

相关推荐

  1. jmeterbeanshell使用

    2024-07-13 18:30:01       36 阅读
  2. Jmeter学习总结(6)——Beanshell中If和For应用

    2024-07-13 18:30:01       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 18:30:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 18:30:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 18:30:01       58 阅读
  4. Python语言-面向对象

    2024-07-13 18:30:01       69 阅读

热门阅读

  1. 第一节 SHELL脚本中的常用命令(6)

    2024-07-13 18:30:01       19 阅读
  2. bert训练的一些技巧(rand() < self.skipgram_prb)

    2024-07-13 18:30:01       18 阅读
  3. Dubbo 负载均衡(Load Balance)

    2024-07-13 18:30:01       19 阅读
  4. 编译的艺术:在Gradle中精调编译器选项

    2024-07-13 18:30:01       22 阅读
  5. 如何防御sql注入攻击

    2024-07-13 18:30:01       20 阅读
  6. html基础篇

    2024-07-13 18:30:01       20 阅读
  7. SpringBoot的启动流程?

    2024-07-13 18:30:01       20 阅读
  8. MyBatisPlus实现增删改查

    2024-07-13 18:30:01       19 阅读
  9. LeetCode 74, 228, 39

    2024-07-13 18:30:01       15 阅读
  10. Oracle字符集修改

    2024-07-13 18:30:01       22 阅读
  11. 力扣 哈希表刷题回顾

    2024-07-13 18:30:01       19 阅读
  12. C++之复合资料型态 第一部(参考 列举 指标)

    2024-07-13 18:30:01       20 阅读