Partage de technologie

jmeter-beanshell apprenant les opérations d'addition, de soustraction, de multiplication et de division à 5 beanshell

2024-07-12

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

Le scénario que j'ai utilisé est de calculer le montant, donc je me concentre principalement sur le montant. Je pense que cette partie est un peu gênante. Je vais juste écrire les quelques pièges que j'ai rencontrés sans démontrer le processus de solution.

1. J’ai d’abord écrit une soustraction de deux nombres, mais la précision décimale est sujette à des problèmes. Par exemple, dans ce cas, 1-0,01=0,989999997, écrivez simplement quelques chiffres avec désinvolture, ne le prenez pas au sérieux. Cette situation est gérée avec BigDecimal.

2. Le problème de l'exactitude du montant calculé a été résolu. L'exactitude du montant que j'ai soumis doit également être traitée. Sinon, le montant calculé est de 1,00 et le montant que j'ai soumis est de 1. Parce qu'il s'agit d'une comparaison de chaînes, 1. n'est pas égal à 1 lors de la comparaison. Dans le cas de 1,00, une erreur se produit.

3. Lorsque jmeter renvoie un message, si le montant est trop important, une notation scientifique apparaîtra, par exemple, le montant renvoyé est 1,23456789013E9. Il doit également être converti dans un format numérique normal.

Pour le moment, ces trois pièges seront discutés ci-dessous. Des plans spécifiques seront rédigés ci-dessous. Scénario : Vérifiez le solde avant de déplacer le compte, vérifiez le solde après avoir déplacé le compte, soustrayez les deux soldes et vérifiez si la différence correspond au montant de ma transaction. La vérification du solde doit être connectée à la base de données, je ne la connecterai pas ici, j'utiliserai plutôt les paramètres utilisateur.Cliquez pour en savoir plus sur la connexion de jmeter à la base de données mysql, le solde avant la transaction est de 1 et le solde après la transaction est de 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);

Calculez la différence, obtenez le montant de la transaction, ajoutez des assertions et portez un jugement.

Ce qui précède est la soustraction effectuée.Notez l'addition, la soustraction, la multiplication et la division.

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


Je l'ai écrit à la hâte et j'ai oublié d'ajouter la conversion en notation scientifique. Si le résultat renvoyé est en notation scientifique, il doit généralement être converti.

Utilisez directement des expressions régulières pour extraire bal_ar puis traitez-le

  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(); Cette ligne convertit la notation scientifique en valeur normale