minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
O cenário que usei é calcular o valor, então me concentro principalmente no valor. Acho que essa parte é um pouco problemática. Vou apenas anotar as poucas armadilhas que encontrei sem demonstrar o processo de solução.
1. Primeiro escrevi uma subtração de dois números, mas a precisão decimal está sujeita a problemas. Por exemplo, neste caso, 1-0,01 = 0,989999997, basta escrever alguns números casualmente, não leve isso a sério. Esta situação é tratada com BigDecimal.
2. O problema da exatidão do valor calculado foi resolvido. A exatidão do valor que enviei também deve ser processada, caso contrário, o valor calculado é 1,00 e o valor que enviei é 1. Por ser uma comparação de string, 1. não é igual a 1 durante a comparação. No caso de 1,00, ocorre um erro.
3. Quando o jmeter retornar uma mensagem, se o valor for muito grande, aparecerá a notação científica, por exemplo, o valor retornado é 1,23456789013E9. Ele também precisa ser convertido em um formato digital normal.
Por enquanto, essas três armadilhas serão discutidas abaixo. Planos específicos serão escritos abaixo. Cenário: Verifique o saldo antes de movimentar a conta, verifique o saldo após movimentar a conta, subtraia os dois saldos e verifique se a diferença é o valor da minha transação. A verificação do saldo deve estar conectada ao banco de dados. Não irei conectá-lo aqui, em vez disso usarei parâmetros do usuário.Clique para saber mais sobre a conexão do jmeter ao banco de dados mysql, o saldo antes da transação é 1 e o saldo após a transação é 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);
Calcule a diferença, obtenha o valor da transação, adicione afirmações e faça um julgamento.
O acima é a subtração feita.Anote adição, subtração, multiplicação e divisão.
- 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);
Escrevi com pressa e esqueci de adicionar a conversão em notação científica. Se o resultado retornado estiver em notação científica, geralmente precisa ser convertido.
Use expressões regulares diretamente para extrair bal_ar e depois processá-lo
- 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();