Невозможно выполнить мой тест, если я добавлю функцию __intSum в постпроцессор beanshell - PullRequest
0 голосов
/ 02 июля 2018

Я написал регулярное выражение (regexpname) в моей теме, которое возвращает число Пример: 10, и когда я пытаюсь использовать регулярное выражение в постпроцессоре BeanShell, добавив функцию __intSum, чтобы добавить число к регулярному Exit Out Out: добавить 4 к регулярному выражению Out, т.е. 10 и сохранить результат в переменной Ex: Total, используя следующую функцию:

{__intSum(4,${regexpname},Total}

при попытке запустить мой тест немедленно останавливается с сообщением

"Jmeter: необработанное исключение: java.lang.NumberFormatException: для входная строка: "$ {regexpname}" ..... ".

Пожалуйста, дайте мне знать, как решить проблему:

Вот код, который я поместил в постпроцессор Beanshell:

import java.text.SimpleDateFormat;

SimpleDateFormat sdf = new SimpleDateFormat("m/dd/yyyy"); // change it according to your Date format

Date originalDate = sdf.parse(vars.get("SigDate"));

Calendar cal = Calendar.getInstance();

cal.setTime(originalDate); 

${__intSum(4,${regexpname},Total)}; 

cal.add(Calendar.DAY_OF_YEAR, Total); // change it if you need to add something else

Date newDate = cal.getTime();
vars.put("newDepdate", sdf.format(newDate));

log.info("Original date: " + vars.get("SigDate"));
log.info("New date: " + vars.get("newDepdate"));

Ответы [ 2 ]

0 голосов
/ 02 июля 2018
  1. Не вставляйте функции JMeter и / или переменные в сценарии , так как они могут преобразоваться во что-то, что приведет к сбою сценария или противоречивому поведению. Либо используйте раздел «Параметры», либо перейдите к эквивалентам на основе кода
  2. Не используйте тестовые элементы Beanshell, рекомендуется переключиться на Тестовые элементы JSR223 и язык Groovy для любых сценариев, начиная с JMeter 3.1
  3. Ваш формат даты выглядит нестабильно, поскольку m обозначает «минуты в час», если вам нужно «месяц в году» - переходите на прописную M
  4. На самом деле здесь вам даже не нужны никакие скрипты, поскольку есть __timeShift () функция , начиная с JMeter 3.2 , которая может делать то, что вам нужно, соответствующий синтаксис будет что-то вроде:

    JMeter TimeShift Demo

0 голосов
/ 02 июля 2018

Используйте int Total = Integer.parseInt(vars.get("regexpname"))+4; вместо ${__intSum(4,${regexpname},Total)}; в вашем бобовом процессоре

enter image description here

Я определил regexpname как 10 в плане тестирования, поэтому его добавление 14 дней и сохранение новой даты в newDepdate.

Для получения дополнительной информации о бобовой оболочке перейдите по этой ссылке

Пожалуйста, дайте мне знать, если это поможет ..

...