- 前言
- 一、前置条件
- 二、使用步骤
- 1.添加BeanshellPostProcessor
- 2.后置处理器设置
- 3.新建线程组+BeanShell取样器
- 4.设置BeanShell取样器
- 5.设置固定定时器
- 前言
- 一、前置条件
- 二、使用步骤
- 1.添加BeanshellPostProcessor
- 2.后置处理器设置
- 3.新建线程组+BeanShell取样器
- 4.设置BeanShell取样器
- 5.设置固定定时器
前言
上次设置全局/局部变量后下一个接口获取的只是最后一次的响应参数,但我的需求是第二个接口获取第一个接口中每次响应数据之一。于是想到了把第一个接口获取的响应参数导出到csv文件中,再让第二个接口的参数读取csv文件的数据,由于参数数据会过期,我需要每次启动线程组的时候脚本先自动清空指定csv文件
一、前置条件
已存在一个目标线程组和http请求,请求中已设置好获取响应参数的提取器。
点击请求右键-添加-后置处理器-BeanshellPostProcessor
BeanShell脚本语言跟java差不多,这里调用FileWriter类将数据导出到guid2.csv文件中;因为线程组设置的循环和线程数都会跑这个脚本,所以我需要这个文件的数据是每次跑完一整个线程组得到的数据。
FileWriter fstream = new FileWriter("E:\J\流网关\guid2.csv",true);
//这里结尾的true表示续写,即数据每次写入都在最末行续上;默认值为false:每次跑这个脚本都会覆盖原有内容再写入
BufferedWriter out = new BufferedWriter(fstream);
out.write( vars.get("guid")+"n");
out.close();
fstream.close();
3.新建线程组+BeanShell取样器
这里新建的取样器用来删除guid2.csv中的内容,因为我不会清空,方法就是直接删除就好了。因为上一个导出的脚本找不到指定文件时会新建。
这里的取样器直接设置在请求那里也可以,需要注意的是线程组是顺序执行所以需要把这个取样器排在请求上面。一开始我没有独立设置线程组,但因为会影响后面用到guid的第二个请求不能正常读取参数(没找到原因),所以我还是将这个取样器独立出来了。
这里删除的代码可以查一下BeanShell常用函数,跟JAVA还是有不同的,添加了一个正在删除可以检测脚本有没有执行。
我需要的是一整个线程组跑之前把上次测试数据删除,如果不设置定时器的话很有可能删除的速度比不上。
这里是每隔三秒发送一次请求,线程组开始执行后会把线程ready后间隔3秒才开始发送,这个时间足以让删除脚本执行完毕。



