Compartir tecnología

jmeter-beanshell aprendiendo operaciones de suma, resta, multiplicación y división de 5-beanshell

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

El escenario que utilicé es calcular la cantidad, por lo que me concentro principalmente en la cantidad. Siento que esta parte es un poco problemática. Solo escribiré algunos errores que encontré sin demostrar el proceso de solución.

1. Primero escribí una resta de dos números, pero la precisión decimal es propensa a tener problemas. Por ejemplo, en este caso, 1-0,01 = 0,989999997, simplemente escriba algunos números de manera casual, no lo tome en serio. Esta situación se maneja con BigDecimal.

2. El problema de la precisión del monto calculado se ha resuelto. La precisión del monto que envié también debe procesarse. De lo contrario, el monto calculado es 1,00 y el monto que envié es 1. Debido a que es una comparación de cadenas, 1 no es igual a 1 durante la comparación. En el caso de 1,00, se produce un error.

3. Cuando jmeter devuelve un mensaje, si la cantidad es demasiado grande, aparecerá la notación científica, por ejemplo, la cantidad devuelta es 1.23456789013E9. También es necesario convertirlo a un formato digital normal.

Por el momento, estos tres obstáculos se analizarán a continuación. Los planes específicos se escribirán a continuación. Escenario: verifique el saldo antes de mover la cuenta, verifique el saldo después de mover la cuenta, reste los dos saldos y verifique si la diferencia es el monto de mi transacción. La verificación del saldo debe estar conectada a la base de datos. No lo conectaré aquí. En su lugar, usaré parámetros de usuario.Haga clic para obtener más información sobre cómo jmeter se conecta a la base de datos mysql, el saldo antes de la transacción es 1 y el saldo después de la transacción es 0,99

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

Calcule la diferencia, obtenga el monto de la transacción, agregue afirmaciones y emita un juicio.

Lo anterior es la resta hecha.Escribe sumas, restas, multiplicaciones y divisiones.

  1. import java.math.BigDecimal;
  2. BigDecimal a=new BigDecimal("6");
  3. BigDecimal b=new BigDecimal("2");
  4. BigDecimal c=a.add(b);
  5. String c1=c.toString();
  6. log.info("a+b="+c1);
  7. BigDecimal c=a.subtract(b);
  8. String c1=c.toString();
  9. log.info("a-b="+c1);
  10. BigDecimal c=a.multiply(b);
  11. String c1=c.toString();
  12. log.info("a*b="+c1);
  13. BigDecimal c=a.divide(b);
  14. String c1=c.toString();
  15. log.info("a/b="+c1);


Lo escribí apresuradamente y olvidé agregar la conversión de notación científica. Si el resultado devuelto está en notación científica, generalmente es necesario convertirlo.

Utilice directamente expresiones regulares para extraer bal_ar y luego procesarlo

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

String bal_ar2=bal_ar1.toPlainString(); Esta línea convierte la notación científica en un valor normal.