性能测试工具 jmeter 提取到唯一性的重复值,怎么做

潘鹏 · 2018年07月30日 · 最后由 北溟 回复于 2018年08月02日 · 3507 次阅读

怎么从 fpid 中这些数值获取唯一性的重复值?求大神解答,指导思路

共收到 9 条回复 时间 点赞

使用后置处理器,写脚本解决

String[] array = vars.get("varName").split(",");
Set<String> set = new HashSet<>();
for(int i=0;i<array.length;i++) {
    set.add(array[i]);
}
String[] arrayResult = (String[])set.toArray(new String[set.size()]);
vars.put("varName", String.join(",", arrayResult));
def jude():
    return [value for value in list(set(fpid)) if fpid.count(value)>=2] #提取唯一并且大于2的。

不知道是不是指这个。。

唯一性的重复值?怎么听着有点矛盾。 一般正则表达式都可以满足需求。不行就写 beanshell 后置处理器

陈子昂 回复

还是不行,没去重。你看看下面评论,有没有解决

arrow 回复

之前都留了小一段代码,你看下。
xxx = "";
for(int i=1;i<=500;i++){
valuehk="fpid_"+i;
columnValue= vars.get(valuehk);
if(columnValue ==null) break;
if(i==1){
xxx=xxx+columnValue;
}else{
xxx=xxx+","+columnValue;
}
}
vars.put("fpid",xxx);
但是上面打印结果出来是好多重复值,我要的是比如 610,611,622 的这样结果

潘鹏 回复

arrow 那个 2 楼可以的,varName 改成你图中的 fpid 不就行了,如果是 jmeter3.3 以前(以后的我没用过)其中那行 Set set = new HashSet<>();还得改为 Set set = new HashSet();

北溟 回复

请你看一下 6 楼,后置处理器有段代码运行出来我这发布截图中的红框结果。发现好多数值都是重复,不知道怎么解决呢。

潘鹏 回复

2 楼代码基于你已经有变量 fpid="132,112,132,132",这个逗号分隔的;你可以把 2 楼的加在你自己 6 楼的后面(7 楼说的 2 处要改),然后看懂了就精简下代码,不精简也能用

10楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册