我将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
中处理这种情况先谢谢
答案 0 :(得分:1)
最简单的解决方案是使用Beanshell PreProcessor动态替换使用单个逗号的双逗号
将以下代码放入预处理器"脚本"面积:
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将为每个参数值替换,,
,
。
有关在JMeter测试中使用Beanshell的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component文章。