Jmeter_循环获取请求接口的字段,并写入文件

news2024/9/20 0:53:05

通过JSON提取器、计数器、beanshell,循环读取邮箱接口的返回字段,筛选出flag为3的收件人,并写入csv文件。

1、调用接口,获取所有的邮件$.data.total.count;

2、beanshell后置处理total转换成页码,这里是227/20,由于Math.ceil没有向上取整,所以加一;

String total = vars.get("total");
int totals = Integer.parseInt(total);
// Math.ceil没有向上取整,所以+1
int total_num = (int)Math.ceil(totals / 20) + 1;
//log.info(total_num.toString());
vars.put("total_num",total_num.toString());

3、设置第一个循环控制器;

4、配置计数器,与循环控制器一起,起到翻页的作用;

5、调用指定页码的接口;

6、正则提取所有的mid,也可以JSON提取;

7、再次设置循环控制器,循环mid个数的次数;

8、再次配置计数器,获取指定的mid,比如mid_1...,mid_20;

9、获取不同的mid,调用接口;这里如果使用${__V(mid_${__counter(,)},)}的话,第一个循环(1-20)正常,第二个循环,counter从21开始,因mid不存在而接口请求失败,所以需要使用${__V(mid_${count},)};

10、beanshell处理返回的数据,首先将json转换,获取flag为3的收件人,并写入csv文件;

import java.io.*;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;

import java.io.BufferedWriter;
import java.io.FileWriter;
import org.apache.jmeter.services.FileServer;

//import java.util.Date;
//import java.text.SimpleDateFormat;
// 
//SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
//String currentDate = dateFormat.format(new Date());
//vars.put("currentDate", currentDate);

// 获取文件路径,这里使用FileServer.getAbsolutePath()获取绝对路径以确保跨平台兼容性
String filePath = FileServer.getFileServer().getBaseDir() + "/sina001_.csv";

// 获取上个http请求返回的json数据
String jsonString = prev.getResponseDataAsString();
// 将json转为JSONObject
JSONObject obj = JSONObject.parseObject(jsonString);
// 拿到响应为true的请求
if(obj.getString("result").equals("true")){
// 提取json数组sendstatus
JSONArray rows =obj.getJSONObject("data").getJSONArray("sendstatus");
// 提取数组sendstatus中的flag
String flag = rows.get(0).get("flag").toString();
// flag=3表示发送失败
if(flag.equals("3")){
	// 获取收件人的邮箱地址
	String mailto = rows.get(0).get("mailto").toString();
//	log.info(mailto);
	try {
    // 创建一个 FileWriter 对象,true 表示追加模式
    FileWriter fstream = new FileWriter(filePath, true);
    // 创建一个 BufferedWriter 对象
    BufferedWriter out = new BufferedWriter(fstream);
    // 替换提取值
    String variableValue = mailto;
    // 将变量值写入文件,并添加换行符
    out.write(variableValue + "\r\n");
    // 关闭 BufferedWriter 和 FileWriter
    out.close();
    fstream.close();

} catch (Exception e) {
    log.error("Error occurred while writing to file: " + e.getMessage());
    SampleResult.setSuccessful(false);
    SampleResult.setResponseMessage("Failed to write to file: " + e.getMessage());
}
}
}

fastjson的下载地址:Central Repository: com/alibaba

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2118356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 HAL freertos零基础(二)-通过STM32CubeMX配置Freertos后在程序中进行任务创建,便于任务管理与识别。

1、简介 通过STM32CubeMX配置Freertos后,建立的任务都在freertos.c文件中,不易于观察,并且每次生成新任务还需要打开STM32CubeMX,本次教程讲解一种通过STM32CubeMX配置Freertos后在程序中进行任务创建,起到类似添加传…

官宣:28家重点实验室,获5750万元资金支持!

【欧亚科睿学术】 点击关注:关注GZH【欧亚科睿学术】,第一时间了解科研最新动态! 根据省级财政专项资金管理办法有关规定,拟安排2024年省重点实验室28项,拟安排省财政资金5750万元。现予以公示: 本文来源…

企业如何治理“两高一弱”?

攻防演练已经落幕,“两高一弱”专项整治依旧如火如荼。针对高危端口、高危漏洞和弱口令这三大网络环境中最常见的关键安全挑战,公安机关及各行业主管部门高度重视,要求各级组织及时发现并消除网络和信息系统“两高一弱”问题,实现…

照片删除了怎么恢复回来?要学会这些数据恢复方法

在数字化时代,照片已经成为我们记录生活、珍藏回忆的重要载体。然而,有时由于误操作或其他原因,我们可能会不小心删除了重要的照片。面对这种情况,很多人会感到焦虑和无助。幸运的是,有多种方法可以帮助我们恢复删除的…

一次性了解Neo4j图形数据库

Neo4j高性能的NoSQL图形数据库 它将结构化数据存储在网络(从数学角度叫做图)上而不是传统的表格中。 Neo4j是一个嵌入式的、基于磁盘的、具备完全事务特性的Java持久化引擎。 但它在数据表示上采用了图形模型,即数据以节点(Nod…

Facebook与区块链的结合:推动社交平台的去中心化

随着区块链技术的崛起,全球各大科技公司纷纷探索其应用潜力。Facebook作为全球领先的社交媒体平台,也在区块链领域中迈出了关键一步,试图通过去中心化技术来提升用户体验并应对传统社交平台所面临的挑战。本文将探讨Facebook与区块链结合的潜…

vue elementUI更改Checkbox 多选框禁用状态下文本颜色

最近在做vue项目中,根据需求要改变CheckBox禁用状态下的文本颜色,原因是默认的文本颜色太浅,要自定义颜色 找了半天终于解决问题 记录一下 话不多说,上代码 希望能够帮到你~ 点赞加关注,下次再找不迷路~~~~

儿童自闭症康复:找到孩子的微小进步,看见希望

星贝育园的康复之旅 在自闭症儿童康复的漫长道路上,每一个微小的进步都是家长心中的巨大希望之光。星贝育园,作为全国领先的自闭症康复机构,以其独特的教育理念、专业的师资团队和显著的康复效果,为无数家庭带来了希望和改变。 …

ICC2:对指定信号线设置ndr rule

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接:

从程序员到外卖员,再到AI绘画大佬:我的逆袭之路

一、行业之卷,失业之痛 大家好,我是一名初代程序员。曾几何时,我也在互联网行业的光环下,享受着高薪和尊敬。然而,随着行业竞争加剧,就业环境变得越来越差,我最终没能逃脱被大厂裁员的命运。 …

[STM32]从零开始的STM32串口使用教程(小白向)

一、我们为什么需要串口? 在嵌入式通信中,我们常常把像SPI,USART,I2C这些 串行通信接口,统称为串口。但是在我们的日常使用中,我们说的串口通常是指的USART接口。下面我们就来了解USART接口,USA…

在 RT-Thread 上使用单色屏 UI 库 - U8G2

U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306等多种类型的OLED驱动。 U8g2的官方开源地址为:https://github.com/olikraus/u8g2 由于官方已经对 RT-Thread 做了一定的适配,并且存在于 RT-Thread 的软件包…

用Python实现时间序列模型实战——Day 15: 时间序列模型的选择与组合

一、学习内容 1. 模型选择的标准与方法(如 AIC、BIC) 在时间序列建模中,模型的选择是非常重要的,常用的模型选择标准包括 AIC (Akaike Information Criterion) 和 BIC (Bayesian Information Criterion)。 AIC (Akaike Informat…

U盘管控软件|禁止拷贝怎么解决?防止U盘拷贝的6款专业软件推荐

某公司员工将U盘插入公司电脑拷贝了重要的研发资料,随后该员工跳槽至竞争对手公司,导致公司商业机密外泄,造成了巨大的经济损失。 随着移动设备的普及,U盘的使用为工作带来了便利,但同时也增加了数据泄密的风险。这一案…

记一次knife4j文档请求异常 SyntaxError: Unexpected token ‘<‘, ... is not valid JSON

knife4j页面报错问题定位 前几天开发新接口,开发完成后想使用knife4j测试一下接口功能,突然发现访问页面报错提示:knife4j文档请求异常,但之前运行还是正常的,想想会不会与升级依赖有关系,启动其他微服务发…

非标金属零件加工的质量与效率是如何体现的?

在现代工业制造领域中,非标金属零件加工以其独特的方式实现了质量与效率的完美融合,成为推动众多行业发展的关键力量。时利和将详细解析非标金属零件加工的质量与效率是如何体现的? 一、先进设备保障高效加工 非标金属零件加工往往依赖于先进的加工设备…

从文字到世界:2024外语阅读大赛报名开启,赛氪网全程护航

中国外文局CATTI项目管理中心与中国外文界联合宣布,将举办2024年外语阅读大赛,旨在激发外语学习兴趣,选拔并培养优秀的语言应用人才,同时向世界展示和传播具有中国特色的优秀文化。此次大赛旨在激发外语学习兴趣,选拔优…

arm64高速缓存基础知识

高速缓存的替换策略 随机法:随机地确定替换的高速缓存行,由一个随机数产生器产生随机数来确认替换行 FIFO法:选择最先调入的高速缓存行进行替换 LRU法:最少使用的行优先替换。 高速缓存的共享属性 内部共享的高速缓存通常指的…

50ETF期权交易对手方是谁?对手方怎么交易?

今天期权懂带你了解50ETF期权交易对手方是谁?对手方怎么交易?上证50ETF期权投资作为目前金融业呼声较高的投资品种,其实与其他类型的金融产品相比,风险是相对较低的了,因为对于投资者而言,亏损只会影响到权…

《mkcert介绍及使用》

🤖 作者简介:水煮白菜王 ,一位资深前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧✍。 感谢支持💕💕💕 关…