JMeter BeanShell PostProcessor将日期提取到T(时区)

时间:2017-11-01 15:15:41

标签: parameters jmeter extract beanshell

我是按照以下格式从json中提取日期:1980-09-08T00:00:00Z。重用这个我只需要:1980-09-08。所以我尝试使用BeanShell后处理器:

String varPurchaseDate = ${PurchaseDate};
log.info(varPurchaseDate);
String[] varDate = line.split("T");
log.info(varDate[0]);

我收到错误

2017/11/01 16:41:30 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   In file: inline evaluation of: ``String varPurchaseDate = 1980-09-08T00:00:00Z; log.info(varPurchaseDate);'' Encountered "9" at line 1, column 32.

请帮忙。另外,我如何能够将参数用作输入,如varDate [0]?

2 个答案:

答案 0 :(得分:1)

  1. 不要在脚本体中引用JMeter Variables or Functions,使用"参数"基于部分或基于代码的等价物
  2. 任何形式的脚本
  3. Since JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language
  4. 所以

    • 切换到JSR223 Post Processor
    • 勾选Cache compiled script if available
    • 将代码的第一行替换为:

      String varPurchaseDate = vars['PurchaseDate']
      

    另外一个建议是尽可能使用JMeter内置组件,特别是在您的情况下,您可以使用__split() function获取日期的第一部分,如:

    ${__split(${PurchaseDate},date,T)}
    

    它将生成以下变量:

    date_1=1980-09-08
    date_2=00:00:00Z 
    date_n=2
    

    因此,您可以将所需的值引用为${date_1}所需的

    JMeter Split Function Demo

答案 1 :(得分:0)

将BeanShell后处理器代码更改为以下内容:

String varPurchaseDate = vars.get("PurchaseDate");
log.info(varPurchaseDate);
String[] varDate = varPurchaseDate.split("T");    
log.info(varDate[0]);    
vars.put("MyDate", varDate[0]);// store the value of varDate[0] in a jmeter variable

之后,您可以使用 $ {MyDate} 作为参数的值。