【问题标题】:Exclude blank values from csv file for JSON array in Jmeter从 csv 文件中排除 Jmeter 中 JSON 数组的空白值
【发布时间】:2016-11-11 01:10:18
【问题描述】:

我有 jsonarray 作为 [foodid1,foodid2,foodid3] 。这些值是从 csv 文件中读取的

csv 文件内容

foodid1,foodid2,foodid3
10,12,14

如果我不想将值传递给 foodid2,JSON 数组将作为 [10,,14] 传递

相反,我希望它以[10,14] 的形式传递。

以下是 JSON 正文:

    customerdetails={
    "regDate":${regDate},
    "regNo":"${regNo}",
    "firstName":"${fname}",
    "lastName":"${lname}",
    "dateOfBirth":"${dob}",
    "bloodGroupId":0,
    "mobileNo":"${mobile}",
    "residenceNo":"${resdno}",
    "officeNo":"${officeno}",
    "email":"${email}",
    "address1":"${adr1}",
    "address2":"${adr2}",
    "pincode":"${pin}",
    "stateId":${stateid},
    "city":"${city}"}
&customerhistory={
"historyId":[${food1},${food2},${food3},${food4}]}

我如何在 Jmeter 中处理这种情况

提前致谢

【问题讨论】:

  • 尝试使用 BeanShell 预处理器并根据您的需要格式化数据,将其存储在变量中,然后在请求中使用它。能否分享一下 CSV 数据集配置和 HTTP 采样器截图

标签: jmeter


【解决方案1】:

最简单的解决方案是使用 Beanshell PreProcessor 即时将双逗号替换为单逗号

  1. 将 Beanshell PreProcessor 添加为您要修改的 HTTP 请求的子项
  2. 将以下代码放入预处理器的“脚本”区域:

    import org.apache.jmeter.config.Arguments;
    import org.apache.jmeter.config.Argument;
    import org.apache.jmeter.protocol.http.util.HTTPArgument;
    
    Arguments oldArgs = sampler.getArguments();
    Arguments newArgs = new Arguments();
    
    for (int i = 0; i < oldArgs.getArgumentCount(); i++) {
        Argument argument = oldArgs.getArgument(i);
        String oldValue = argument.getValue();
        String newValue = oldValue.replaceAll(",,", ",");
        newArgs.addArgument(new HTTPArgument(argument.getName(), newValue));
    }
    
    sampler.setArguments(newArgs);
    

    当您运行测试时,预处理器会将每个参数值的 ,, 替换为 ,

有关在 JMeter 测试中使用 Beanshell 的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2020-05-09
    相关资源
    最近更新 更多