jmeter常用配置、脚本

发布时间 2023-12-11 11:48:40作者: 大圣原来姓毛

一、CSV 数据文件读取、和写入CSV

读取MYSQL数据库的配置可参考:https://www.cnblogs.com/snailon/articles/17102671.html

1.读取CSV文件(读取文件可以放bin目录下,就可以不用写绝对路径,写文件名称即可)

2.提取的值(encryToken,signToken,vin,userId)写入csv,代码如下:

FileWriter fstream = new FileWriter("D:\\dlink\\tokens.csv",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("encryToken")+",");
out.write(vars.get("signToken")+",");
out.write(vars.get("vin")+",");
out.write(vars.get("userId")+",");
out.write(System.getProperty("line.separator"));
out.close();
fstream.close();

 jmeter造的业务数据或提取接口返回值时,有时会看到返回值有乱码,可能是编码问题,可以在http请求,加utf-8

参考链接:https://blog.csdn.net/u013302168/article/details/126366082

二、读取Redis

代码片段:

import redis.clients.jedis.Jedis;

// import org.apache.commons.lang3.StringUtils;
String
host = "${redisHost}"; // 服务器地址
int port = ${redisPort}; // 端口号
String password = "${redisAuth}"; // redis密码
int index = 0; // redis db,默认为0
String key = "bff:b2c:code:${key}"; // key值,需要读取数据的键值
Jedis jedis = new Jedis(host, port, true); //云服务Redis时 加true
// jedis.connect()
// if (StringUtils.isNotBlank(password)){
jedis.auth(password);
//}
jedis.select(index); // 选择redis db
String value = jedis.get(key); // 通过key值获取对应value
vars.put("code", value); // 将获取的value值保存到jmeter变量code中 ${code}引用
log.info(value)

三、JSON提取器取值

匹配验证在线工具:https://www.lddgo.net/string/jsonpath,正则匹配规则可参考:

https://zhuanlan.zhihu.com/p/591796289?utm_id=0
https://blog.csdn.net/weixin_60664821/article/details/127774588?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-127774588-blog-130429863.235^v39^pc_relevant_anti_vip&spm=1001.2101.3001.4242.1&utm_relevant_index=1

 四、Bealshell向文本写数据的几种方式

   1.字符流

//指定输出文件所在的目录和名字,
String filename = "D://test.txt";//此处可以用txt,也可以用csv
//true为追加写入内容,如果每次都清空重写,将true删掉
FileWriter writer = new FileWriter(filename,true);
String data_name1 = vars.get("name1");//name1是我本地正则表达式提取出来的变量
String data_name2 = vars.get("name2");
writer.write(data_name1+","+data_name2);//多条数据用逗号分割
writer.write("\r\n");//换行操作,用于下一组数据换行展示
writer.close();

2.字节流
String filename = "F://review.txt";
File file = new File(filename);
FileOutputStream fs = new FileOutputStream(file,true);
fs.write("asdada".getBytes());
fs.write("\r\n".getBytes());
fs.close();

3.封装成类
public class JmeterReadAndWrite {
public static void writeTxt(String txtPath, String content){
File file = new File(txtPath);
FileOutputStream fs = new FileOutputStream(file,true);
fs.write(content.getBytes());
fs.write("\r\n".getBytes());
// fs.flush();
fs.close();
}

}
String str = vars.get("review_id");//正确的写法
String txtPath = "F:\\review.txt";
JmeterReadAndWrite.writeTxt(txtPath,str);
原文链接:https://blog.csdn.net/qq_34365469/article/details/101419994

4.循环写入

 

FileWriter fstream = new FileWriter("/jmeter/src/datacsv/goodsInfofor",true);
BufferedWriter out = new BufferedWriter(fstream);
//log.info(vars.get("goodsName_${__counter(true,)}").replace(" ","-"));for(int i=1; i<${goodsName_matchNr}+1; i++){
    goodsName_i = "goodsName_"+i;
     // log.info(goodsName_i);
    String goodsName = vars.get(goodsName_i).replace(" ","-");

    goodsId_i = "goodsId_"+i;
    String goodsId = vars.get(goodsId_i);

    goodsColorId_i = "goodsColorId_"+i;
    String goodsColorId = vars.get(goodsColorId_i);

    goodsColorName_i = "goodsColorName_"+i;
    String goodsColorName = vars.get(goodsColorName_i);
    // log.info(goodsName);
   out.write(goodsName+","+goodsId+","+goodsColorId+","+goodsColorName+"\n");
 }
out.close();
fstream.close();