【问题标题】:How to save values from HTTP response with JMeter?如何使用 JMeter 从 HTTP 响应中保存值?
【发布时间】:2018-01-04 13:34:32
【问题描述】:

在 JMeter 测试计划中,我有太多的 HTTP 请求。每次单击创建按钮时,其中之一都会创建一个新会话。

如何将该 session_id 存储在 CSV 文件中以供进一步操作?

【问题讨论】:

  • session id如何返回?你能做出回应吗?您是否尝试过正则表达式或添加 cookie 管理器?

标签: jmeter


【解决方案1】:

鉴于您已经使用相关的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 会将其值存储在提供的文件中。

【讨论】:

  • 我无法从 JSR223 PostProcessor 创建文件。请提供详细信息
【解决方案2】:

有几种方法可以做到这一点。最有用的是 RegExp 后处理器。 它可以在这里找到,如下图所示。 将它放在返回所需数据作为响应的请求下。

RegExp 根据创建变量的名称捕获组并将它们存储在不同的变量名称下。可以在响应的不同区域搜索值,如图所示,我们可以在标题、重定向页面、主体等中搜索。存储的变量可以通过 ${VariableName}(例如 ${JSESSION_ID})在其他 HTTP 请求或处理器(Post 和 Pre)中重复使用

  1. 参考名称
  2. 正则表达式本身
  3. 捕获组
  4. 比赛号码
  5. RegExp 不起作用时设置的默认值

调试: 如果未找到值,则 DEBUG 与 Tree Results Viewer 合作可以提供帮助。他们在这里:

一般的脚本结构可能如下所示:

【讨论】:

    【解决方案3】:

    添加 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多