Parameters JMeter BeanShell后处理器提取直到T(时区)的日期

Parameters JMeter BeanShell后处理器提取直到T(时区)的日期,parameters,jmeter,extract,beanshell,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 -

我正在以以下格式从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]?

将您的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}作为参数值

  • 不要在脚本正文中引用,而是使用“参数”部分或基于代码的等效项
  • 对于任何形式的脚本
  • 所以

    • 切换到
    • 勾选
      缓存已编译脚本(如果可用)
    • 将代码的第一行替换为:

      String varPurchaseDate = vars['PurchaseDate']
      

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

    ${__split(${PurchaseDate},date,T)}
    
    它将生成以下变量:

    date_1=1980-09-08
    date_2=00:00:00Z 
    date_n=2
    
    因此,您可以在需要时将所需值引用为
    ${date\u 1}


    谢谢,我使用了拆分功能。运行函数的方法是添加HTTP示例并在头中执行它吗?看起来很丑。。。