Jmeter接口自动化-如何解决请求头Content-Type冲突问题

一、前言

通常我们在使用Jmeter做接口自动化时,在线程组里添加HTTP信息头管理器,用来管理公共的请求头信息。普通的接口自动化是没问题的,但是对于有些特殊的操作流程,如:先上传文件接口(信息头使用Content-Type: multipart/form-data),之后操作传json格式的接口(信息头使用Content-Type: application/json),这两种接口的请求头信息就会有冲突。

接下来会根据示例来一步步的解决此问题。

二、原始脚本

例如有以下5个接口,连起来就是一个自动化操作流程。

1-图片上传

2-获取服务数据

3-设置服务图片

4-设置服务状态

5-获取服务状态

其中:

“1-图片上传”接口请求头为Content-Type: multipart/form-data

“3-设置服务图片”、“4-设置服务状态”接口请求头为Content-Type: application/json

在线程组下添加HTTP信息头管理器,添加值为Content-Type: application/json

“1-图片上传”接口设置了Content-Type: multipart/form-data

每个接口都添加了响应断言。

脚本结构:

执行脚本:

“1-图片上传”接口的请求头是Content-Type: application/json,而不是Content-Type: multipart/form-data

所以“1-图片上传”接口,不能使用公共的HTTP信息头管理器里的请求头信息。

三、原始脚本优化1

将原始脚本进行优化

将公共的HTTP信息头管理器的位置调整一下,不作为公共请求头,而是给需要该请求头的接口指定添加。

“1-图片上传”接口为上传类型的接口,已经在请求里设置了Content-Type: multipart/form-data

“2-获取服务数据”、“5-获取服务状态”接口不需要添加请求头。

“3-设置服务图片”、“4-设置服务状态”接口需要添加请求头(Content-Type: application/json),所以在这两个接口下添加HTTP信息头管理器即可。

脚本结构:

执行脚本:

全部接口执行成功。

“1-图片上传”接口请求头信息。

“3-设置服务图片”接口请求头信息。

缺点:当接口很多时,如果大量接口都需要指定的HTTP信息头管理器,维护起来有些麻烦、而且脚本看起来有些臃肿,不方便统一修改等。

四、原始脚本优化2

将原始脚本进行优化

将“1-图片上传”接口从原有的线程组里抽出来,单独放进新建的线程组里,即两个线程组。“1-图片上传”接口在一个线程组里,其他接口在一个线程组里。

其他接口所在的线程组里的HTTP信息头管理器,请求头值不变。

脚本结构:

执行脚本:

同时运行两个线程组,全部接口执行成功。

缺点:两个线程组所组成的自动化脚本虽然在业务流程上是可以跑通的,但是这种把线程组分出来,看起来不像一个整体。尤其是线程组脚本越来越多的时候,执行起来有些不方便。

五、原始脚本最终优化

将原始脚本进行优化

因为“1-图片上传”接口不需要公共信息头里的请求头信息,所以添加BeanShell PreProcessor前置处理器,删除公共请求头里的信息。

脚本代码:

import org.apache.jmeter.protocol.http.control.HeaderManager;
// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印全部请求头信息
log.info("删除前" + headers.getHeaders().getStringValue());
// 删除请求头指定的信息
sampler.getHeaderManager().removeHeaderNamed("Content-Type");
// 打印全部请求头信息
log.info("删除后" + headers.getHeaders().getStringValue());

此时公共请求头里的指定信息被删除了,之后的接口要用到这个信息,所以在后续的接口上再添加回来,例如“3-设置服务图片”接口会用到公共的信息头,在此接口上添加BeanShell PreProcessor前置处理器,添加请求头信息到公共请求头里。

脚本代码:

import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;
// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印全部请求头信息
log.info("添加前" + headers.getHeaders().getStringValue());
// new一个Header对象
myHeader = new Header("Content-Type", "application/json");
// 添加Header到请求头管理器
headers.add(myHeader);
// 打印全部请求头信息
log.info("添加后" + headers.getHeaders().getStringValue());

请求头信息添加成功后,后续的接口若要用到这个信息,则无需再添加(BeanShell PreProcessor前置处理器),就可以使用了。

公共的HTTP信息头管理器,请求头值不变。

脚本结构:

执行脚本:

全部接口执行成功。

“1-图片上传”接口请求头信息。

“3-设置服务图片”接口请求头信息。

查看执行时打印的日志,打印出删除与添加请求头信息。

注意:公共的HTTP信息头管理器禁用或删除,执行脚本会报错。

即使脚本添加了请求头信息,但还是找不到所指定的请求头。

 

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

openGauss学习笔记-240 openGauss性能调优-SQL调优-更新统计信息

文章目录 openGauss学习笔记-240 openGauss性能调优-SQL调优-更新统计信息240.1 背景信息240.2 操作步骤 openGauss学习笔记-240 openGauss性能调优-SQL调优-更新统计信息 在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造…

01 THU大模型之基础入门

1. NLP Basics Distributed Word Representation词表示 Word representation: a process that transform the symbols to the machine understandable meanings 1.1 How to represent the meaning so that the machine can understand Compute word similarity 计算词相似度 …

Huggingface中Transformer模型使用

一、Huggingface介绍 1、Huggingface定位 NLP自从Transformer模型出现后,处理方式有大统一的趋势,首先回答几个基础问题: 1、自然语言处理究竟要做一件什么事呢?自然语言处理最终解决的是分类问题,但是它不仅仅输出…

算法之二分查找算法

二分查找算法简介 1. 首先说明二分查找算法是比较恶心, 细节很多, 很容易写出死循环的算法, 但熟悉了之后是最简单的算法. 2. 其次我们可能听说过二分查找的前提是数组有序的前提下进行, 但其实不一定. 3. 二分查找算法有一套模板: 朴素的二分模板: 比较简单, 但是有局限性查找…

运维自动化之ansible

pxe 一键安装操作系统 操作系统只是提供一个平台 lnmp 需要多软件协同完成的一个简单项目 服务器正常运行 日常运维 巡检 服务器上的软件正常运行 zabbix 普罗米修斯 系统调优,架构调优 云计算核心职能 搭建平台架构 日常运营保障 性能效率优化 相关工具 代…

SDWAN专线对企业接入有门槛吗

SD-WAN(软件定义广域网)技术作为一种新型的网络解决方案,正在成为企业网络接入的热门选择。然而,对于企业来说,接入SD-WAN专线是否存在门槛,是一个值得探讨的问题。本文将从不同角度分析SD-WAN专线对企业接…

HTML 学习笔记(十一)表单

一、分块 1.单行文本框控件–文本框和密码框 文本框控件通过单标签input实现,其具有必要属性type来控制输入控件的类型(默认为text即文本信息),密码框的type为password(口令)。   表单的动作属性定义了目的文件的文件名。由动作属性定义的这个文件通常…

国内可用免费AI工具集

1、Kimi Chat 由月之暗面科技有限公司(Moonshot AI)开发的人工智能助手。擅长中英文对话,能够提供安全、有帮助且准确的回答。它的能力包括阅读和理解用户上传的文件,访问互联网内容,以及结合搜索结果来回答问题。比如…

【C#】WPF获取屏幕分辨率

SystemParameters提供的接口,其实是获取渲染过程中的实际高宽,是受系统DPI设置的影响。 以 1920 * 1080 和 125% DPI为例: 分辨率高度:1080,实际获取的高度为:864。 分辨率宽度:1920&#xff…

高项-项目整合管理

项目整合管理的目标 资源分配平衡竞争性需求研究各种备选方法裁剪过程以实现项目目标管理各个项目管理知识域之间的依赖关系 项目整合管理的过程 制定项目章程制定项目管理计划指导与管理项目工作管理项目知识监控项目工作实施整体变更控制结束项目或阶段 七个过程和五大过…

【1688运营】如何拆解竞争对手店铺和单品数据?

关注竞争对手数据是1688运营中不可或缺的一环,它有助于企业更好地了解市场环境、发现市场机会、学习成功经验、预测市场变化以及提升竞争力。以下是一些建议,帮助你全面、深入地分析竞争对手的店铺和单品数据: 1、监控店铺数据 可以通过店雷…

求第n个斐波那契数--c语言

用递归的方法&#xff1a; //用递归求第n个斐波那契数 int fib(int n){if(n<2){return 1;}else{return fib(n-1)fib(n-2); } } #include<stdio.h> int main(){int n0;printf("请输入n的值&#xff1a;");scanf("%d",&n);int result fib(n);…

未来艺术展览新趋势——3D线上画展如何创新展示?

一、艺术展示的数字化转型 随着科技的不断进步&#xff0c;3D线上画展作为艺术展示的新趋势&#xff0c;正逐渐改变着人们欣赏和购买艺术作品的方式。对于画家而言&#xff0c;3D线上画展不仅提供了一个全新的平台来展示他们的作品&#xff0c;还开辟了销售渠道&#xff0c;扩大…

面向对象技术(第一周)

目录 ⚽前言 &#x1f3d0;面向对象思想 起源 现实 编程联系 面向对象思想总结 &#x1f3c0;面向对象开发方法 开发中的名词&#xff1a; 名词间的关系 名词具体阐释 一、对象 二、消息和方法&#xff1a; 前言 本文所有知识点和内容均来自山东大学潘丽老师及山东…

京津冀协同发展:北京·光子1号金融算力中心——智能科技新高地

京津冀协同发展是党中央在新的历史条件下提出的一项重大国家战略&#xff0c;对于全面推进“五位一体”总体布局&#xff0c;以中国式现代化全面推进强国建设、民族复兴伟业&#xff0c;具有重大现实意义和深远历史意义。随着京津冀协同发展战略的深入推进&#xff0c;区域一体…

unique_ptr使用说明

背景 指针问题一直是一个比较麻烦的事情&#xff0c;比如很多人说要用智能指针完全替换掉裸指针&#xff0c;有人说要用unique_ptr, 有人建议shared_ptr,可是实际看各种经典框架&#xff0c;发现一个框架什么指针都有&#xff0c;使用的方法也是无法八门&#xff0c;这里简单说…

可访问性使命:Facebook构建无障碍社交空间

在当今数字化时代&#xff0c;社交媒体已成为人们日常生活的重要组成部分&#xff0c;而Facebook作为全球最大的社交平台之一&#xff0c;其使命不仅在于连接世界&#xff0c;还在于构建一个无障碍的社交空间&#xff0c;让每个人都能参与其中。本文将深入探讨Facebook在可访问…

几个增强诊断详解

几个增强诊断 基于CAN线 ISO15031-5是排放相关的应用层协议&#xff0c;它不关心我们使用K线还是CAN线&#xff0c;主要用于监控车辆基本参数&#xff0c;例如监控里程、车速&#xff1b;用于监控排放相关的参数&#xff0c;比如各种尾气的含量&#xff0c;氧含量等等&#xf…

红队笔记7--Web机器为Linuxdocker逃逸

其实&#xff0c;不知道大家有没有想过&#xff0c;我们之前练习的都是web机器是windows的版本&#xff0c;但是其实&#xff0c;在现实生活中&#xff0c;服务器一般都是Linux的版本&#xff0c;根本不可能用到windows的版本 那么如果是Linux的话&#xff0c;我们就有很多的困…

【正点原子STM32探索者】CubeMX+Keil开发环境搭建

文章目录 一、简单开箱二、资料下载三、环境搭建3.1 安装Keil MDK3.2 激活Keil MDK3.3 安装STM32CubeMX3.4 安装STM32F4系列MCU的Keil支持包 四、GPIO点灯4.1 查阅开发板原理图4.2 创建STM32CubeMX项目4.3 配置系统时钟和引脚功能4.4 生成Keil项目4.5 打开Keil项目4.6 编译Keil…