使用jmeter往指定文件中插入一定数量的数据(转)

Posted a00ium

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jmeter往指定文件中插入一定数量的数据(转)相关的知识,希望对你有一定的参考价值。

有一个需求,新建一批账号,把获取的账号相关信息存入文本文件,当文本文件保存的数据达到一定的数量,就自动停止新建账号。

 分析下需求:

1、把账号信息保存到文件,需要使用bean shell脚本(bean shell脚本语法和java一样,功能也一样),并且需往脚本中传入要保存的信息

2、文件中保存的数据达到一定的数量,就自动停止新建账号。数量也是要用bean shell脚本读文件获取文件行数,并传出。自动停止新建脚本,这就需要加个jmeter的if控制器,在if控制器的条件中判断数量是否达到。

 

脚本实现过程:

1、位了模拟得到账号信息,先设置一个User Defined Variables,通过add > config element > User Defined Variables 添加

 技术图片

 在User Defined Variables 中添加一个变量account_info,值随意给就可以,如“111111111111”,这样往文件中保存“111111111111”模拟为账号信息

 技术图片

 

2、新建一个bean shell 脚本,读取获取文件行数

技术图片
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

int count = 0;
try{
    File file = new File("E:\\test.txt");
    // 如果文件不存在就新建
    if (!file.exists())
    { 
        file.createNewFile();
    }  
    // 读文件
    BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(new FileInputStream(file.getAbsolutePath()), "UTF-8"));
    // 循环获取文件行数
    while ((str=bufferedReader.readLine())!=null)
    { 
        count = count + 1;
    }
    bufferedReader.close(); 

}catch(IOException e)
{
    e.printStackTrace();
}
//文件行数java变量传给jmeter变量total_lines
vars.put("total_lines",String.valueOf(count));
View Code

3、新建一个if 控制器

 技术图片

 

if 控制器里面的条件填写:

${__jexl3(${total_lines}<11,aa)},其中total_lines 是bean_shell脚本返回的。使用${__jexl3(${total_lines}<11,aa)} 对${total_lines}<11进行判断并返回true 或false

 技术图片

 

4、再在if控制器中新建一个 写文件bean shell

技术图片
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
// 传入jmeter 变量 account  ,使用java变量 message接收
String message= vars.get("account_info");
try{
    File file = new File("E:\\test.txt");
    // 如果文件不存在,就新建一个文件
    if (!file.exists())
    { 
        file.createNewFile();
    }
    // 文件末尾追加写入文件  
    FileOutputStream fos = new FileOutputStream(file.getAbsoluteFile(),true);
     fos.write(message.getBytes());  
     fos.write("
".getBytes());  
     fos.close();
}catch(IOException e)
{
    e.printStackTrace();
}
View Code

整个jmeter 脚本结构形式

 技术图片

 

以上是关于使用jmeter往指定文件中插入一定数量的数据(转)的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter笔记——如何使用json提取器,提取json多层列表下指定字段所在层的其他数据(转)

JMeter数据库性能测试

mysql往数据库插入float类型的数据 为啥数字不对?

list往指定的下标插入元素

jmeter-结果数据写入指定文件

jmeter学习笔记——一种简单的数据库性能测试方法