如果将__intSum函数添加到beanshell后处理器中,则无法执行测试

时间:2018-07-01 23:41:25

标签: jmeter beanshell

我在线程中编写了一个正则表达式(regexpname),该正则表达式返回数字Ex:10,并且当我尝试通过添加__intSum函数在BeanShell后处理器中使用正则表达式时添加一个将数字添加到正则表达式输出Ex:将正则表达式输出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"));

2 个答案:

答案 0 :(得分:-1)

在您的beanshell pre processor中使用int Total = Integer.parseInt(vars.get("regexpname"))+4;代替${__intSum(4,${regexpname},Total)};

enter image description here

我在测试计划中将regexpname定义为10,因此它增加了14天并在newDepdate中存储了新日期。

有关beanshell的更多信息,请关注this link

请告诉我是否有帮助。

答案 1 :(得分:-1)

  1. Don't inline JMeter Functions and/or variables into scripts,因为它们可以解析为会导致脚本故障或行为不一致的问题。使用“参数”部分或使用基于代码的等效项
  2. 不要使用Beanshell测试元素it is recommended to switch to JSR223 Test Elements and Groovy language for any form of scripting since JMeter 3.1
  3. 如果您需要“一年中的月份”,则date format会显得片状,因为m代表“小时数”-请使用大写字母M
  4. 实际上,您甚至不需要在这里编写任何脚本,因为__timeShift() functionJMeter 3.2可以满足您的需要,相关语法如下:

    JMeter TimeShift Demo