моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Сценарий, который я использовал, предназначен для расчета суммы, поэтому я в основном сосредотачиваюсь на сумме. Я чувствую, что эта часть немного хлопотная, я просто запишу несколько ошибок, с которыми я столкнулся, не демонстрируя процесс решения.
1. Сначала я написал вычитание двух чисел, но с десятичной точностью могут возникнуть проблемы. Например, в данном случае 1-0,01=0,989999997, просто напишите несколько цифр небрежно, не воспринимайте это всерьез. Эта ситуация обрабатывается с помощью BigDecimal.
2. Проблема точности рассчитанной суммы также должна быть обработана. В противном случае рассчитанная сумма равна 1,00, а отправленная мной сумма равна 1. Поскольку это сравнение строк, 1. не равно 1 во время сравнения. В случае 1,00 возникает ошибка.
3. Когда jmeter возвращает сообщение, если сумма слишком велика, появится экспоненциальное обозначение, например, возвращаемая сумма равна 1,23456789013E9. Его также необходимо преобразовать в обычный цифровой формат.
Пока эти три ловушки будут обсуждаться ниже. Конкретные планы будут написаны ниже. Сценарий: проверьте баланс перед перемещением учетной записи, проверьте баланс после перемещения учетной записи, вычтите два баланса и проверьте, является ли разница суммой моей транзакции. Проверка баланса должна быть подключена к базе данных. Здесь я ее подключать не буду, буду использовать пользовательские параметры.Нажмите, чтобы узнать о подключении jmeter к базе данных MySQL., баланс до транзакции равен 1, а баланс после транзакции равен 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);
Рассчитайте разницу, получите сумму транзакции, добавьте утверждения и вынесите суждение.
Вышеупомянутое вычитание выполнено.Запишите сложение, вычитание, умножение и деление.
- 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);
Я написал это в спешке и забыл добавить преобразование в экспоненциальную запись. Если возвращаемый результат имеет экспоненциальную запись, его обычно необходимо преобразовать.
Непосредственно используйте регулярные выражения для извлечения bal_ar и последующей его обработки.
- 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() Эта строка преобразует экспоненциальное обозначение в обычное значение;