用beanshell实现功能:如果参数required param中存在 ${column1_60} 这个字符串,那么就将这个字符串替换成 从数据库中查询出来的某一个值
实现代码如下:
运行结果如下:
可以看到${column1_60}这个字符串并没有按照预期结果替换
再次查看 查看结果树中的BeanShell请求body,发现替换的那一行代码变成了String data = data.replace("66",id);,这样就理解了为什么替换不成功了,这句意思就变成了在required param中找66,如果找到了就替换成id的值,当然不是我们想要的预期,查看了debug sampler刚好${column1_60}就是66
难道beanshell可以不通过vars.get 直接获取到jmeter的变量,直接用${column1_60} 就可以取到吗?尝试着打印了${column1_60} ,报错
这一步和刚才的差距只是少了引号,加上引号再试就好了
这就说明beanshell有第二种方法可以取到jmerer里的变量,这就理解了刚才替换的那句为什么执行后变成了String data = data.replace("66",id);
vars.get("column1_60") 等价于 "${column1_60}"
解决开篇问题的办法就是可以将excel数据中换个变量名,避免和jmeter中的变量冲突就可以了,将${column1_60}换成${test},这下就运行成功了