Jmeter如何测试需要登录的接口

首先说明本系统的登录采用的是session,但是无论是什么登录步骤都是大差不差的

1.首先要构造用户测试的数据保存到数据库
在这里插入图片描述

2.构造请求获取请求后的请求头(如果需要代码参照请看最后)
3.解析请求头获取需要的cookie(sessionId是放在cookie中)或token。如果对header的结果无法把控就打印一个看一下结构再解析
4.保存所有的cookie或token到一个txt文件中

在这里插入图片描述

5.接下来就是jmter的测试环节,最基本得有这几个
在这里插入图片描述
选择刚刚生成的cookie.txt文件
在这里插入图片描述

使用${}获取即可
在这里插入图片描述
接下来测试即可
在这里插入图片描述
所有代码

    /*** 登录接口示例*/@PostMapping("/login")@ResponseBodypublic ResponseDTO userLogin(@Valid @RequestBody UserLoginReq req, HttpSession session, HttpServletRequest request) 
    @Testpublic void testCreateUserGetCookie() throws IOException {//1.创建测试用户集合信息,插入user表和student表List<TUserEntity> userEntityList = new ArrayList<>();List<TStudentEntity> studentEntityList = new ArrayList<>();//2.保存用户信息for (int i = 1; i <= 500; i++) {UUID uuid = UUID.randomUUID();String userId = uuid.toString().replaceAll("-", "");//user表TUserEntity userEntity = new TUserEntity();userEntity.setId(userId);userEntity.setRealName("user"+i);userEntity.setGender(1);userEntity.setUsername("123123"+i);userEntity.setPhoneNumber("130"+String.format("%0" + (11 - "130".length()) + "d", i));userEntity.setEmail("2080067852"+"@qq.com");userEntity.setPassword( CommonUtils.encodeByMd5(defaultPassword+salt));userEntity.setSchoolId("001");userEntity.setCampusId("0011");userEntity.setIcon("school.png");userEntity.setStatus(1);userEntity.setRecordStatus(1);userEntity.setKind(0);userEntity.setCreateTime(new Date());userEntityList.add(userEntity);//student表TStudentEntity tStudentEntity = new TStudentEntity();tStudentEntity.setSchoolId("001");tStudentEntity.setUserId(userId);tStudentEntity.setStudentNum("2015201805"+i);tStudentEntity.setName("张"+i+"憨");tStudentEntity.setGender(1);tStudentEntity.setCampus("test");tStudentEntity.setMajor("test");tStudentEntity.setClassNum("311631");tStudentEntity.setCreateTime(new Date());studentEntityList.add(tStudentEntity);}//3.批量保存studentService.saveBatch(studentEntityList);userService.saveBatch(userEntityList);//4.批量发起请求for (int i = 0; i < userEntityList.size(); i++) {//拼装参数发起请求,根据你自己的登录接口UserLoginReq userLoginReq = new UserLoginReq();userLoginReq.setUsername("123123"+(i+1));userLoginReq.setPassword("123456");userLoginReq.setSchoolId("001");userLoginReq.setCode("da513");String url="http://localhost:8080/api/v1/public/login";//发起请求,保存tokenn.txt文件sendHttpGetCookie(userLoginReq, url);}}
    private void sendHttpGetCookie(UserLoginReq userLoginReq, String url) throws IOException {// 2.创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();// 创建Http Post请求HttpPost httpPost = new HttpPost(url);httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");//3.封装需要的数据String json = JSON.toJSONString(userLoginReq); // 将对象转换为 JSON 字符串StringEntity requestEntity = new StringEntity(json, StandardCharsets.UTF_8);httpPost.setEntity(requestEntity);
//        response = httpClient.execute(httpPost);//4.解析结果CloseableHttpResponse execute = httpClient.execute(httpPost);Header[] headers = execute.getAllHeaders();for (Header header : headers) {System.out.println(header.getName()+":"+header.getValue());}String value = headers[3].getValue();String cookie = value.split(";")[0];//2.写入文件File filePath=new File("D:/cookies.txt");FileWriter fileWriter = new FileWriter(filePath, true); // 使用 true 表示追加写入BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);bufferedWriter.write(cookie);bufferedWriter.newLine(); // 换行// 关闭文件写入流bufferedWriter.close();System.out.println("cookieRes: "+cookie);}
            <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version><scope>compile</scope></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.13</version><scope>runtime</scope></dependency>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公司电脑监控软件:守护企业信息安全的重要防线

在当今信息化时代&#xff0c;企业信息安全问题日益突出&#xff0c;电脑监控软件作为企业信息安全的重要保障&#xff0c;越来越受到企业的关注和重视。本文将围绕公司电脑监控软件展开讨论&#xff0c;探讨其作用、优势以及如何选择合适的电脑监控软件。 首先&#xff0c;公司…

07 Vue3中的三元表达式

概述 三元表达式时JavaScript中比较常用的一种原生语法&#xff0c;能够在一行代码中实现if-else的分支逻辑。 在Vue的双大括号中&#xff0c;我们也可以使用三元表达式去实现一些简单的条件渲染。 基本用法 我们创建src/components/Demo07.vue&#xff0c;先尝试一下三元表…

【flink】状态清理策略(TTL)

flink的keyed state是有有效期(TTL)的&#xff0c;使用和说明在官网描述的篇幅也比较多&#xff0c;对于三种清理策略没有进行横向对比得很清晰。 全量快照清理(FULL_STATE_SCAN_SNAPSHOT)增量清理(INCREMENTAL_CLEANUP)rocksdb压缩清理(ROCKSDB_COMPACTION_FILTER) 注意&…

3D 纹理贴图基础知识

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 纹理贴图是创建模型时离不开的最后一块拼图。同样&#xff0c;…

关于“Python”的核心知识点整理大全34

目录 第&#xff11;3 章 外星人 13.1 回顾项目 game_functions.py 13.2 创建第一个外星人 13.2.1 创建 Alien 类 alien.py 13.2.2 创建 Alien 实例 alien_invasion.py 13.2.3 让外星人出现在屏幕上 game_functions.py 13.3 创建一群外星人 13.3.1 确定一行可容纳…

深入了解C编译管道

文章目录 引言1. 预处理阶段2. 编译阶段3. 汇编阶段4. 链接阶段5.流程图结论 引言 C编译管道是软件开发中至关重要的工具&#xff0c;它负责将C语言源代码转换为可执行的机器代码。理解C编译管道的工作原理有助于提高代码的可读性、可维护性&#xff0c;并有助于优化生成的可执…

润和软件HopeStage与亚信安全云主机深度安全防护系统完成产品兼容性互认证

近日&#xff0c;江苏润和软件股份有限公司&#xff08;以下简称“润和软件”&#xff09;HopeStage 操作系统与亚信科技&#xff08;成都&#xff09;有限公司&#xff08;以下简称“亚信安全”&#xff09;云主机深度安全防护系统完成兼容性测试。 测试结果表明&#xff0c;企…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)ChannelMap 模块的实现

&#xff08;三&#xff09;ChannelMap 模块的实现 这个模块其实就是为Channel来服务的&#xff0c;前面讲了Channel这个结构体里边它封装了文件描述符。假如说我们得到了某一个文件描述符&#xff0c;需要基于这个文件描述符进行它对应的事件处理&#xff0c;那怎么办呢&…

前端常用的开发工具

前端常用的开发工具&#x1f516; 文章目录 前端常用的开发工具&#x1f516;1. Snipaste--截图工具2. ScreenToGif--gif图片录制3. Typora--Markdown编辑器4. notepad--文本代码编辑器5. uTools--多功能工具6. EV录屏--录屏软件7. Xmind--思维导图8. Apifox -- 接口调试9. Tor…

12.21 汇编点亮STM32MP157小灯

.text .global _start _start: 时钟使能LDR r0,0x50000A28LDR r1,[r0]ORR r1,r1,#(0x1<<4)ORR r1,r1,#(0x1<<5)ORR r1,r1,#(0x1<<1)STR r1,[r0]配置GPIO模式LDR r0,0x50006000LDR r1,[r0]BIC r1,r1,#(0x2<<20)ORR r1,r1,#(0x1<<20)BIC r1,r1,#(…

Linux ContOS7 日志管理(rsyslog)

目录 01. rsyslog 记录日志程序 02.日志文件 03.日志等级 Linux 日志文件是记录 Linux 系统运行信息的文件。它们类似于人类的日记&#xff0c;记录了系统的各种活动&#xff0c;如用户登录、进程启动、错误消息等。 Linux 日志文件通常存储在 /var/log/ 目录中。该目录包含…

扫码展示多视频怎么做?视频的活码制作技巧

现在扫码看视频的应用场景越来越多&#xff0c;用这种方式不仅能够简单有效的低成本完成视频传播&#xff0c;而且也符合用户的习惯。那么当需要将视频制作二维码来展示内容时&#xff0c;多个视频文件生成二维码的制作方法是怎么操作的呢&#xff1f;下面教大家使用视频二维码…