le mie informazioni di contatto
Posta[email protected]
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
- 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);
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.
- 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);
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
- 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(); Questa riga converte la notazione scientifica in un valore normale