【发布时间】:2018-01-04 13:34:32
【问题描述】:
在 JMeter 测试计划中,我有太多的 HTTP 请求。每次单击创建按钮时,其中之一都会创建一个新会话。
如何将该 session_id 存储在 CSV 文件中以供进一步操作?
【问题讨论】:
-
session id如何返回?你能做出回应吗?您是否尝试过正则表达式或添加 cookie 管理器?
标签: jmeter
在 JMeter 测试计划中,我有太多的 HTTP 请求。每次单击创建按钮时,其中之一都会创建一个新会话。
如何将该 session_id 存储在 CSV 文件中以供进一步操作?
【问题讨论】:
标签: jmeter
鉴于您已经使用相关的JMeter PostProcessor 提取了此session_id,您可以使用JSR223 PostProcessor 将其值保存到文件中,代码如下:
new File('/path/to/your/file.csv') << vars.get('session_id') << System.getProperty('line.separator')
确保在“语言”下拉菜单中选择 groovy 并勾选 Cache compiled script if available 框。
如果${session_id} 变量存在 - JMeter 会将其值存储在提供的文件中。
【讨论】:
有几种方法可以做到这一点。最有用的是 RegExp 后处理器。 它可以在这里找到,如下图所示。 将它放在返回所需数据作为响应的请求下。
RegExp 根据创建变量的名称捕获组并将它们存储在不同的变量名称下。可以在响应的不同区域搜索值,如图所示,我们可以在标题、重定向页面、主体等中搜索。存储的变量可以通过 ${VariableName}(例如 ${JSESSION_ID})在其他 HTTP 请求或处理器(Post 和 Pre)中重复使用
调试: 如果未找到值,则 DEBUG 与 Tree Results Viewer 合作可以提供帮助。他们在这里:
一般的脚本结构可能如下所示:
【讨论】:
添加 BeanShell 后处理器。复制、粘贴以下代码(对路径和变量进行修改)。
var = vars.get("your_variable_name");
FileWriter fstream = new FileWriter("/your/desired/path/results.csv", true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(var);
out.write(System.getProperty("line.separator"));
out.close();
fstream.close();
【讨论】: