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,返回的是一个数组,后面引用变量的时候要用 get
p
​    
 icture
u
​    
 rl即可,如果填写−1,返回的是一个数组,后面引用变量的时候要用{get_picture_url_1},${get_picture_url_2}的形式)

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

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

图片

二)新建用户凭证接口

1、添加一个简单控制器

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

图片

二)新建用户凭证接口

1、添加一个简单控制器

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

图片

3、添加http请求

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

图片

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

图片

4、添加响应断言

根据实际接口填写即可

图片

四、JMeter脚本执行

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

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

图片

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

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

C语言每日一题(36)队列实现栈功能

力扣 225 用队列实现栈 题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int…

vue2系列 — 自定义指令

https://v2.cn.vuejs.org/v2/guide/custom-directive.html <div v-example:foo.bar"baz">vue 自定义指令的钩子 bind&#xff1a; 当 v-XXX 指令绑定到节点上时 触发inserted&#xff1a;被绑定元素插入父节点时调用update&#xff1a;所在组件的 VNode 更新…

使用nprogress实现请求进度条

一、安装nprogress npm i nprogress 二、 在axios的请求拦截器中使用nprogress 如果对于axios的请求和响应拦截器的使用不了解的&#xff0c;可以看这篇文章&#xff1a; axios二次封装配置请求拦截器和响应拦截器-CSDN博客 nprogress上有两个有用的方法&#xff1a; star(…

OpenStack云计算平台-Dashboard(图形化)

目录 一、安装和配置 1、安全并配置组件 2、完成安装 ​二、验证操作 一、安装和配置 1、安全并配置组件 安装软件包&#xff1a; yum install openstack-dashboard 编辑文件 vim /etc/openstack-dashboard/local_settings vim /etc/httpd/conf.d/openstack-dashboard.…

如何用Python爬取全国高校数据?

前言 Python是一门强大的编程语言&#xff0c;它可以用于爬取互联网上的各种数据。在这篇文章中&#xff0c;我们将学习如何使用Python爬取全国高校数据&#xff0c;并使用代理IP进行爬取。 本文主要分为以下几个部分&#xff1a; 数据来源及需求安装依赖包及导入模块爬取全…

关于禅道的安装配置以及项目管理、团队协同工作

目录 一、禅道是什么&#xff1f; 二、特点和功能 三、安装禅道 3.1 下载官网 3.2 版本考虑 3.3 禅道使用手册参考 3.4 Windows端安装禅道 四、启动禅道 4.1 访问禅道 四、禅道部分功能的使用 4.1 添加项目集 4.2 启动/关闭项目 4.3 项目计划仪表盘/阶段目标/研发…

头歌——操作系统实训总结

死锁 1、系统出现死锁时一定同时保持了四个必要条件&#xff0c;对资源采用按序分配算法后可破坏的条件是&#xff08;A&#xff09;。 A、循环等待条件B、互斥条件C、占有并等待条件D、不可抢占条件 2、资源的静态分配算法在解决死锁问题中是用于&#xff08;B&#xff09;。 …

【图论】关键路径求法c++

代码结构如下图&#xff1a; 其中topologicalSort(float**, int, int*, bool*, int, int)用来递归求解拓扑排序&#xff0c;topologicalSort(float**, int*&, int, int, int)传参图的邻接矩阵mat与结点个数n&#xff0c;与一个引用变量数组topo&#xff0c;返回一个布尔值…

代码随想录-刷题第五天

链表题目总结 链表基本操作 对链表进行增删改查等基本操作。注意&#xff0c;很多链表的题目使用虚拟头结点操作起来会更加方便。每次对应头结点的情况都要单独处理&#xff0c;所以使用虚拟头结点的技巧&#xff0c;就可以解决这个问题。 反转链表 可以使用头插法&#xf…

Shopee本土号封号几率大吗?如何避免封号?被封号了怎么办?

Shopee是近几年热门的电商平台之一&#xff0c;即使越来越多的跨境电商涌现&#xff0c;他的地位在东南亚市场依然占据一席之地&#xff0c;也依旧吸引着需要跨境商家入局。尤其在2023年&#xff0c;在TikTok Shop在印尼被关停之后&#xff0c;留下了大片空白&#xff0c;Shope…

CF 1890A Doremy‘s Paint 3 学习笔记 map的使用

原题 A. Doremys Paint 3 time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output An array &#x1d44f;1,&#x1d44f;2,…,&#x1d44f;&#x1d45b;&#xfffd;1,&#xfffd;2,…,&#xfffd;&a…

跨境电商必须要海外代理IP吗?盘点五大海外代理IP

相信跨境电商人近日都为了2023的跨境黑五旺季奋战&#xff0c;而2024也即将来临&#xff0c;对于跨境人的考验一波接着一波&#xff0c;根据Adobe Analytics的数据&#xff0c;2022年黑色星期五的销售额创下91.2亿美元新高&#xff0c;网络星期的销售额同样达到创纪录的113亿美…

『 C++类与对象 』多态之单继承与多继承的虚函数表

文章目录 &#x1fae7; 前言&#x1fae7; 查看虚表&#x1fae7; 单继承下的虚函数表&#x1fae7; 多继承下的虚函数表 &#x1fae7; 前言 多态是一种基于继承关系的语法,既然涉及到继承,而继承的方式有多种: 单继承多继承棱形继承棱形虚拟继承 不同的继承方式其虚表的形…

ToDesk提示通道限制 - 解决方案

问题 使用ToDesk进行远程控制时&#xff0c;免费个人账号最多支持1个设备同时发起远控&#xff0c;若使用此账号同时在2个设备发起远控&#xff0c;则会提示通道限制&#xff0c;如下图&#xff1a; 解决方案 方案1&#xff1a;断开其它远控 出现通道限制弹窗时&#xff0…

数据结构(超详细讲解!!)第二十四节 二叉树(下)

1.遍历二叉树 在二叉树的一些应用中&#xff0c;常常要求在树中查找具有某种特征的结点&#xff0c;或者对树中全部结点逐一进行某种处理。这就引入了遍历二叉树的问题&#xff0c;即如何按某条搜索路径访问树中的每一个结点&#xff0c;使得每一个结点仅且仅被访问一次。 …

python3实现tailf命令

由于windows上面没有类似linux上面的tailf命令&#xff0c;所以下面的python脚本来代替其能力。 tailf.py import re import timeimport os import argparsedef follow(thefile):thefile.seek(0, os.SEEK_END)while True:_line thefile.readline()if not _line:time.sleep(0…

RabbitMQ 搭建和工作模式

MQ基本概念 1. MQ概述 MQ全称 Message Queue&#xff08;[kjuː]&#xff09;&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。 &#xff08;队列是一种容器&#xff0c;用于存放数据的都是容器&#xff0…

docker部署微服务

目录 docker操作命令 镜像操作命令 拉取镜像 导出镜像 删除镜像 加载镜像 推送镜像 部署 pom文件加上 在每个模块根目录加上DockerFile文件 项目根目录加上docker-compose.yml文件 打包&#xff0c;clean&#xff0c;package 服务器上新建文件夹 测试docker-compo…

基于springboot和微信小程序的流浪动物管理系统

基于springboot和微信小程序的流浪动物管理系统 内容简介 基于微信小程序实现的流浪动物管理系统&#xff0c;该系统针对用户与管理员两种角色进行开发。 1、提供流浪动物的信息查询功能&#xff0c;包括品种、年龄、性别、健康状况等&#xff0c;提供救助活动报名功能。 2…

5.1 PBR基础 BRDF介绍

基于物理的渲染&#xff08;Physically Based Rendering&#xff0c;PBR&#xff09;是指使用基于物理原理和微平面理论建模的着色/光照模型&#xff0c;以及使用从现实中测量的表面参数来准确表示真实世界材质的渲染理念。 一、反射率方程 理论基础放在参考链接里。 直接开始…