JMeter接口测试之文件上传

news2024/9/30 15:29:44

最近用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,返回的是一个数组,后面引用变量的时候要用get 
p

 icture 
u

 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.coloradmin.cn/o/1025276.html

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

相关文章

数字孪生相关政策梳理--数字孪生整体规划(可下载)

自2021年国家“十四五”规划纲要提出“探索建设数字孪生城市”以来,国家发展和改革委员会、工业和信息化部、住房和城乡建设部、水利部、农业农村部等部门纷纷出台政策,大力推动数字孪生在千行百业的落地发展。这些政策不仅为数字孪生的应用提供了广阔的…

期权策略篇: 实现买方狂欢,让卖方稳赚不赔的策略

欢迎来到期权策略篇: 实现买方狂欢,让卖方稳赚不赔的策略,今天给大家带来的期权策略比较简单,是我们比较常见的四种单腿期权策略,这四种策略分别是买入看涨期权、买入看跌期权、卖出看涨期权、卖出看跌期权策略。本文来自&#xf…

C. Binary Strings are Fun

Problem - C - Codeforces 思路:我们发现如果sisi-1,那么假设为00,用f[i-1]表示si-1能够组成的合法的个数,那么si-1扩展的字符串中至少会有i-1个0,那么si有两种放法,1种是放一个1,一种是放一个0…

python文件(概念、基本操作、常用操作、文本文件的编码方式)

嗨喽,大家好呀~这里是爱看美女的茜茜呐 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可 1. 文件的概念…

python装13的一些写法

一些当你离职后,让老板觉拍大腿的代码 1. any(** in ** for ** in **) 判断某个集合元素,是否包含某个/某些元素 代码: if __name__ __main__:# 判断 list1 中是否包含某个/某些元素list1 [1,2,3,4]a any(x in [5,4] for x in list1) 输…

深拷贝与浅拷贝,就是这么简单

目录 1.拷贝的概念2.浅拷贝2.1. 浅拷贝的定义2.2. 浅拷贝的实现方式2.3 在内存中: 3. 深拷贝3.1. 深拷贝的定义3.2. 深拷贝的实现方式3.3 在内存中 4. 深拷贝与浅拷贝的区别5. 原型模式与深浅拷贝的关系6. 总结 1.拷贝的概念 在编程中,拷贝(或…

循环神经网络--01 序列模型

生成数据 import torch from torch import nn from d2l import torch as d2lT 1000 time torch.arange(1,T1,dtypetorch.float32) x torch.sin(0.01*time)torch.normal(0,0.2,(T,)) d2l.plot(time,x,time,xlim[1,1000],figsize(6,3))将序列转换为特征-标签对(fe…

【大数据之Kafka】十五、Kafka-Kraft模式

1 Kafka-Kraft架构 左图为 Kafka 现有架构,元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理。   右图为 kraft 模式架构(实验性),不再依赖 zookeeper 集群&#xff0…

以服务方式启动安防监控系统EasyNVR程序出现播放异常,是什么原因?

EasyNVR安防视频监控平台的特点是基于RTSP/Onvif协议,将前端设备统一接入,在平台进行转码、直播、处理及分发,在智慧安防视频监控场景中,EasyNVR可实现实时监控、云端录像、检索与回放、云存储、告警、级联等视频能力,…

湖南株洲三维扫描检测CNC机加工零件截面检测弧度测量-CASAIM中科广电

自工业时代开始以来,机械加工及零部件产业已经涵盖了各大电器零部件、汽车零部件、建筑机械零部件、航空航天零部件、海洋工程零部件等领域,涉及多种机械机床及工具仪器的制造。 零件在加工过程中,受制于加工工艺等各方面的因素,…

Tomcat调优【精简版】

Tomcat调优 优化Tomcat内存分配 调整Tomcat启动脚本contalina.sh,设置tomcat启动时分配的内存很可使用的最大内存; CATALINA_OPTS 调整Tomcat线程池 Tomcat默认使用的线程池:ThreadPoolExecutor 可以通过修改server.xml的 Connector 节点下的 maxThreads、minSpareThread…

关于删除的一些小纰漏

前端ajax如果传参不正确,会报500的错,可能是路径文件夹名字不对,一定要确认好,大写与小写的区别:question/QuestionStem_deleteList.do?ids"ids, 还有后面要加get请求后面要加"id",然后后面要加入传的…

004:vue使用relation-graph实现关系图谱

文章目录 1. 效果2. relation-graph简介3. 安装及使用4. 其他更多示例 1. 效果 2. relation-graph简介 这是一个Vue关系图谱组件,可以展示如组织机构图谱、股权架构图谱、集团关系图谱等知识图谱,可提供多种图谱布局,包括树状布局、中心布局…

神经网络训练防止过拟合和欠拟合的方法

神经网络训练防止过拟合和欠拟合的方法 1 过拟合的概念2 欠拟合的概念3 防止过拟合和欠拟合的方法 1 过拟合的概念 如上图所示,模型在训练时表现较好,在验证或测试时,表现较差,即表示过拟合。 过拟合的本质是模型对训练样本过度学…

Linux CentOS7 wc命令

wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 录入 man wc 可以查看相关信息 基本语法: wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也…

Online Fast Adaptive Low-Rank Similarity Learning for Cross-Modal Retrieval部分复现

表1 我的结果: R50条件下的均值:0.52889 Rall条件下的均值:0.430458

Vue 学习笔记 错误ResizeObserver loop completed with undelivered notifications

环境Vue3 Ts 使用了el-table 后,容易出现如下错误 ERROR ResizeObserver loop completed with undelivered notifications. at handleError (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:299:58) at eval (webpack-internal:///./nod…

pytorch代码实现之动态卷积模块ODConv

ODConv动态卷积模块 ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv通过并行策略采用多维注意力机制沿核空间的四个维度…

全局异常处理器@RestControllerAdvice解析 Springboot项目异常处理 JavaWeb @ExceptionHandler

RestControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(Exception.class)//指定捕获异常类型:所有public Result ex(Exception ex){ex.printStackTrace();return Result.error("对不起,出现异常,请联系管理员");}}RestControllerAdvice注解在…

基于Yolov8的野外烟雾检测(1)

目录 1.Yolov8介绍 2.野外火灾烟雾数据集介绍 2.1数据集划分 1.2 通过voc_label.py得到适合yolov8需要的txt 2.3生成内容如下 3.训练结果分析 4.系列篇 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的…