从Jmeter中的JSON数组的csv文件中排除空白值

时间:2016-11-10 09:06:00

标签: jmeter

我将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

中处理这种情况

先谢谢

1 个答案:

答案 0 :(得分: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);
    

    当您运行测试时,PreProcessor将为每个参数值替换,, ,

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