JMeter BeanShell 后处理器提取日期直到 T(时区)
JMeter BeanShell PostProcessor to extract date until T (time zone)
我正在按照以下格式从 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} 作为参数的值。
- 不要在脚本正文中引用 JMeter Variables or Functions,而是使用 "Parameters" 部分或基于代码的等效项
- Since JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language 任何形式的脚本
所以
- 切换到 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}
我正在按照以下格式从 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} 作为参数的值。
- 不要在脚本正文中引用 JMeter Variables or Functions,而是使用 "Parameters" 部分或基于代码的等效项
- Since JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language 任何形式的脚本
所以
- 切换到 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}