Condivisione della tecnologia

jmeter-beanshell learning 5 operazioni di addizione, sottrazione, moltiplicazione e divisione di beanshell

2024-07-12

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

Lo scenario che ho utilizzato è quello di calcolare l'importo, quindi mi concentro principalmente sull'importo. Ritengo che questa parte sia un po' problematica. Scriverò semplicemente le poche insidie ​​che ho riscontrato senza dimostrare il processo di soluzione.

1. Per prima cosa ho scritto una sottrazione di due numeri, ma la precisione decimale è soggetta a problemi. Ad esempio, in questo caso, 1-0.01=0.989999997, scrivi semplicemente alcuni numeri in modo casuale, non prenderli sul serio. Questa situazione viene gestita con BigDecimal.

2. Il problema dell'accuratezza dell'importo calcolato è stato risolto. È necessario elaborare anche l'accuratezza dell'importo che ho inviato. Altrimenti, l'importo calcolato è 1,00 e l'importo che ho inviato è 1. Poiché si tratta di un confronto di stringhe, 1. non è uguale a 1 durante il confronto. Nel caso di 1.00 si verifica un errore.

3. Quando jmeter restituisce un messaggio, se l'importo è troppo grande, verrà visualizzata la notazione scientifica, ad esempio l'importo restituito è 1.23456789013E9. Inoltre deve essere convertito in un normale formato digitale.

Per il momento, queste tre trappole verranno discusse di seguito. I piani specifici verranno scritti di seguito. Scenario: controlla il saldo prima di spostare il conto, controlla il saldo dopo aver spostato il conto, sottrai i due saldi e verifica se la differenza è l'importo della transazione. Il controllo del saldo dovrebbe essere collegato al database. Non lo collegherò qui, utilizzerò invece i parametri utente.Fare clic per informazioni sulla connessione di jmeter al database mysql, il saldo prima della transazione è 1 e il saldo dopo la transazione è 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);

Calcola la differenza, ottieni l'importo della transazione, aggiungi asserzioni ed esprimi un giudizio.

Quanto sopra è la sottrazione eseguita.Annotare addizione, sottrazione, moltiplicazione e divisione.

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


L'ho scritto di fretta e ho dimenticato di aggiungere la conversione in notazione scientifica. Se il risultato restituito è in notazione scientifica, di solito deve essere convertito.

Utilizza direttamente le espressioni regolari per estrarre bal_ar e quindi elaborarlo

  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(); Questa riga converte la notazione scientifica in un valore normale