Не могу выполнить мой тест, если я добавлю функцию __intSum в постпроцессор beanshell

Я написал регулярное выражение (regexpname) в своем потоке, которое возвращает число Ex: 10, и когда я пытаюсь использовать регулярное выражение в постпроцессоре BeanShell, добавляя функцию __intSum, чтобы добавить число к выходному регулярному выражению Пример: добавить 4 в выходное регулярное выражение, т. е. 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"));

person Kumar    schedule 01.07.2018    source источник


Ответы (2)


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

введите здесь описание изображения

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

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

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

person Rohit    schedule 02.07.2018

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

    Демонстрация JMeter TimeShift

person Dmitri T    schedule 02.07.2018