当前位置: 首页 > news >正文

Jmeter接口测试之文件上传

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

最近用Jmeter做接口测试,频繁遇到了文件上传的接口,与其他一般接口的处理方式不一样,想着分享下,希望能给测试同学一点启发。

文章将围绕三个部分进行展开:

  • 用户场景

  • 接口请求参数

  • JMeter脚本编写步骤

  • JMeter脚本执行

一、用户场景

有一个新建用户凭证页面,填写字段信息,上传图片文件,点击提交,即新建成功。

这个步骤包含两个接口,一个上传图片文件接口,返回一个路径字段值,在新建凭证接口的请求参数中带上路径,即可新建成功。

图片

实现脚本的基本思路就是先调用上传接口,利用JSON提取器将返回的路径字段值提取出来,存在一个变量${get_picture_url}中,再调用新建接口,直接将路径变量的值赋给请求参数attachUrl。

二、接口请求参数

1、文件上传接口

对于文件上传类的接口,注意观察Request Headers的Content-Type,值为:multipart/form-data

图片

请求体,参数为file

图片

响应值,返回上传文件的路径信息,即data字段的值

图片

2、新建用户凭证接口

Request Headers的Content-Type,值为:application/x-www-form-urlencoded

图片

请求体,参数为有6个,主要关注attachUrl,这个参数是上传接口返回字段data的值

图片

响应值,新建成功则返回success

图片

三、JMeter脚本编写步骤

一)上传接口脚本编写

1、添加一个线程组:财务管理

图片

2、添加一个简单控制器

加不加都不重要,主要是为了规范脚本,使脚本更便于阅读,一般是一个简单控制器下一个http请求

图片

3、添加http请求

协议,服务器名称,请求方法,请求路径等照常填写,但是要勾选 Use multipart/form-data for POST,如果还有其他参数,直接在Parameters里面照常填写,示例中的接口没有,就不写了

图片

切换至File Upload,填写上传文件信息

文件名称:写本地的上传文件路径即可(注意,脚本部署到Linux服务器上时,注意切换路径)

参数名称:填写文件路径的参数名称,示例中的参数是file

MIME类型:multipart/form-data

图片

4、添加响应断言

根据实际接口填写即可

图片

5、添加JSON提取器

Names of Created variables:作为引用的变量名称,多个变量名通过分号;隔开,自定义

JSON Path expessions:格式为 . (层级名称),本次示例即为 .(层级名称),本次示例即为.(层级名称),本次示例即为.data

Match No.:取第几个数值,0代表随机,-1代表取全部数组数据,1代表取一个变量数值,与设置的变量名称有关,本次示例填-1(说明:如果填写1,后面引用变量的时候直接用g e t p i c t u r e u r l 即可,如果填写 − 1 ,返回的是一个数组,后面引用变量的时候要用 {get_picture_url}即可,如果填写-1,返回的是一个数组,后面引用变量的时候要用getp​ictureu​rl即可,如果填写−1,返回的是一个数组,后面引用变量的时候要用{get_picture_url_1},${get_picture_url_2}的形式)

Compute concatenation var(suffix_ALL):匹配到的所有数值并保存,默认为空即可

Default Value:取值失败时展示的内容,默认为空即可

图片

二)新建用户凭证接口

1、添加一个简单控制器

加不加都不重要,主要是为了规范脚本,使脚本更便于阅读,一般是一个简单控制器下一个http请求

图片

3、添加http请求

协议,服务器名称,请求方法,请求路径等照常填写,不需要勾选 Use multipart/form-data for POST,attachUrl参数,直接将变量${get_picture_url_1}的值赋给attachUrl

图片

File Upload也不用填写任何信息了

图片

4、添加响应断言

根据实际接口填写即可

图片

四、JMeter脚本执行

执行脚本,除了查看结果数,看接口全部执行成功外,还要去页面看新建的用户凭证详情中,上传图片是否成功。

今天在调试过程中发现,即使新建用户凭证接口的路径不正确,也能成功新建用户凭证,只不过在查看详情的时候,图是裂的,就像这种效果,所以即使脚本调通了,也要去页面看看,图片是不是真的上传成功了。

图片

这样,一个完整的接口上传脚本就成功了。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

http://www.dtcms.com/a/342120.html

相关文章:

  • XXL-Job REST API 工具类完全解析:简化分布式任务调度集成
  • WebSocket和跨域问题
  • Android为ijkplayer设置音频发音类型usage
  • 如何用 SolveigMM Video Splitter 从视频中提取 AAC 音频
  • CMake3: CMake的嵌套使用与自定义库
  • Spring Event 企业级应用
  • 笔试——Day45
  • Prompt魔法:提示词工程与ChatGPT行业应用读书笔记:提示词设计全能指南
  • 第四章:大模型(LLM)】07.Prompt工程-(7)角色提示
  • Flink基础
  • 解锁工业级Prompt设计,打造高准确率AI应用
  • Web自动化测试:测试用例流程设计
  • Java设计模式-解释器模式
  • 策略模式 vs 适配器模式
  • 基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265
  • 移动应用抓包与调试实战 Charles工具在iOS和Android中的应用
  • 数据结构初阶:详解二叉树(三):链式二叉树
  • system\core\init\init.cpp----LoadBootScripts()解析init.rc(1)
  • STM32之串口详解
  • 学习Linux嵌入式(正点原子imx课程)开发到底是在学什么
  • Spring Cloud Netflix学习笔记06-Zuul
  • Kafka消息持久化机制全解析:存储原理与实战场景
  • Kafka集成Flume
  • 人工智能 -- 循环神经网络day1 -- 自然语言基础、NLP基础概率、NLP基本流程、NLP特征工程、NLP特征输入
  • 算法 之 拓 扑 排 序
  • LeetCode 回文链表
  • 桥梁设计模式
  • RabbitMQ事务消息原理是什么
  • RabbitMQ:延时消息(死信交换机、延迟消息插件)
  • 领域专用AI模型训练指南:医疗、法律、金融三大垂直领域微调效果对比