1.已有一个登录的HTTP请求-登录2
2.启动,查看结果树
计划提取请求头 Connection 的 keep-alive 字段
响应主体:userId 的9786字段
以及响应码 200
3.正则表达式提取器,提取Connection
正则表达式提取器,提取userId
边界提取器,提取响应代码
4.添加beanshell后置处理程序,写入脚本
FileWriter fstream = new FileWriter("E://jmeter//pk1.csv", true);
BufferedWriter out = new BufferedWriter(fstream);
out.write( vars.get("Connection")+","+"userId" + "," + vars.get("userId") +","+"code" + "," + vars.get("returnCode")+",");
out.write( vars.get("name"));
out.write(System.getProperty("line.separator"));
out.close();
fstream.close();
其中:
① System.getProperty("line.separator")
这也是换行符,功能和"\n"是一致的,但是此种写法屏蔽了 Windows和Linux的区别 ,更保险一些.
https://blog.csdn.net/zhpengfei0915/article/details/20614639
out.write("code" + "," + vars.get("returnCode")+"\n");
+"\n" :也是换行的效果
② "," 体现在csv文档中就是向右移一个单元格
5.启动请求
在目标路径产生文档,打开文档,存在提取的字段
(若已存在文档,该代码是可以续写文档的,不会覆盖之前的记录)
6.可在线程组设置线程数。(即http请求运行几次)
7.遇到的问题:
① 数据一直写入失败,结果是【要检查的响应字段】选错了,像提取响应码 【200】应该选 信息头
写入失败会导致文件被占用的情况(文件无法删除)
② 这边的username参数,是由csv文件传参的 Jmeter小试牛刀-参数化
要在代码里获取,应获取name,而不是username
③ "userId": 9786 后有换行符,空格,} 等等
用边界提取器提取,右边界直接输 }
结果会导致提取值自带了换行,导致后一个值换行显示
之后又尝试右边界输入 \n 等,结果取不到值。。
用正则愉快的取到值了
(虽然边界提取器适合小白,但正则还是要会一点。。两个都有其占优势的使用场景)
参考教程: https://blog.csdn.net/nielinqi520/article/details/80310806
网友评论