首页 > 解决方案 > Jmeter从csv读取参数,其中参数数量不固定

问题描述

我是 jMeter 的新手。我需要将参数作为键值对数组传递。示例参数如下所示:

a:3:{i:2925107;i:1389339;i:2778927;i:1317197;i:2880395;i:1389407;}

这里的值 2925107、2778927、2880395 代表键,1389339、1317197 和 1389407 代表它们对应的值。

此外,它将出现在下一行参数中,如下所示:

lease_ids[2925107]  1389339 
lease_ids[2778927]  1317197 
lease_ids[2880395]  1389407 

除此之外,我还需要将更多参数存储到 csv 中。

我不知道我应该如何将它保存在 csv 文件中以及我应该如何阅读它。

问题的示例图像

标签: csvjmeter

解决方案


  1. 设置您的CSV 数据集配置,以使这些租约 ID 采用以下形式:

    a:3:{i:2925107;i:1389339;i:2778927;i:1317197;i:2880395;i:1389407;}
    a:3:{i:2925108;i:1389340;i:2778928;i:1317198;i:2880396;i:1389408;}
    

    即在单独的行上的每个条目。用作id“变量名”

    JMeter CSV 数据集配置

  2. 从HTTP 请求采样器中删除所有lease_ids[xxxxxxx]参数

  3. 添加JSR223 PreProcessor作为 HTTP 请求采样器的子级

  4. 将以下代码放入“脚本”区域:

    def matches = (vars.get('id') =~ 'i:(\\d+)').findAll()
    
    for (int i = 0; i < matches.size() - 1; i++) {
        sampler.addArgument('lease_ids[' + matches.get(i).get(1) + ']', matches.get(i + 1).get(1))
    }
    
  5. 就是这样,JSR223 PreProcessor 会自动解析id变量并将相关lease_ids参数添加到请求中。

更多信息:Apache Groovy - 为什么以及如何使用它


推荐阅读