技术分享 | 接口自动化测试中,文件上传该如何测试?

news2024/11/16 15:49:06

在服务端自动化测试过程中,文件上传类型的接口对应的请求头中的 content-type 为 multipart/form-data; boundary=…,碰到这种类型的接口,使用 Java 的 REST Assured 或者 Python 的 Requests 均可解决。

实战练习

Python 版本

在 Python 版本中,可以使用 files 参数上传文件,files 要求传递的参数内容为字典格式,key 值为上传的文件名,value 通常要求传递一个二进制模式的文件流。

url = 'https://httpbin.ceshiren.com/post'
 files = {"hogwarts_file": open("hogwarts.txt", "rb")}
 r = requests.post(url, files=files)
 r.text
{
"args": {},
"data": "",
"files": {
"hogwarts_file": "123"
},
"form": {},
...省略...
"url": "https://httpbin.ceshiren.com/post"
}

Java 版本

Java 需要使用 given() 方法提供的 multiPart() 方法,第一个参数为 name, 第二个参数需要传递一个 File 实例对象,File 实例化过程中,需要传入上传的文件的绝对路径+文件名。

import java.io.File;

import static io.restassured.RestAssured.*;

public class Requests {
public static void main(String[] args) {
given().multiPart("hogwartsFile", new File("绝对路径+文件名")).
when().post("https://httpbin.ceshiren.com/post").then().log().all();
}
}


响应内容为

{
"args": {
},
"data": "",
"files": {
"hogwarts_file": "123"
},
"form": { 
},
"headers": {
...省略...
},
"json": null,
"origin": "119.123.207.174",
"url": "https://httpbin.ceshiren.com/post"
}

在这里插入图片描述

使用抓包工具抓取过程数据数据,可以清楚看到传递数据过程中,如果是 Java 版本,name 传递内容为 multiPart() 方法的第一个参数,在 Python 版本中为 files 参数传递的字典的 key 值,而 filename 不论是 Java 版本还是 Python 版本,传递的内容均为传递文件的文件名。


              【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战 

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具

八、JMeter性能测试 

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到! 

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

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

相关文章

Mysql原理篇--第三章 事务与锁

文章目录 前言一、mysql 的事务1 .1 mysql 事务:1 .2 mysql 为什么要支持事务: 二、mysql的事务实现:2.1 mysql的事务隔离级别:2.2 mysql 脏读,不可重复读,幻读:2.2.1 脏读:2.2.2 不可重复读:2.…

生态共建 | 5-6月,YashanDB与14款产品完成兼容互认证

5-6月,深圳计算科学研究院崖山数据库系统YashanDB与中科可控信息产业有限公司、云基智慧工程股份有限公司、上海天玑数据技术有限公司、金蝶软件(中国)有限公司、上海布雷德科技有限公司、深圳市杉岩数据技术有限公司、广东中兴新支点技术有限…

prometheus和cAdvisor组合

文章目录 docker内部署PromethuesPrometheuscAdvisorPrometheus和cAdvisor关系配置 docker内部署Promethues Prometheus Prometheus是一个开源的系统监控和报警工具,由SoundCloud开发并在2012年捐赠给了Cloud Native Computing Foundation (CNCF)。它被广泛用于监…

CAN学习笔记1:计算机网络

计算机网络 1 概述 计算机网络就是把多种形式的计算机用通信线路连接起来,并使其能够互相进行交换的系统。实际上,计算机网络包括了计算机、各种硬件、各种软件、组成网络的体系结构、网络传输介质和网络通信计数。因此,计算机网络是计算机…

第G3周:CGAN|生成手势图像

目录 一、准备工作1. 导入数据2. 数据可视化 二、构建模型1. 构建生成器2. 构建鉴别器 三、训练模型1. 定义损失函数2. 定义优化器3. 训练模型 四、理论基础1.DCGAN原理2.DCGAN网络3.个人感悟 🍨 本文为🔗365天深度学习训练营 中的学习记录博客&#x1f…

自动化测试:让软件测试更高效更愉快!

谈谈那些实习测试工程师应该掌握的基础知识(一)_什么时候才能变强的博客-CSDN博客https://blog.csdn.net/qq_17496235/article/details/131839453谈谈那些实习测试工程师应该掌握的基础知识(二)_什么时候才能变强的博客-CSDN博客h…

【C++ 进阶】学习导论:C/C++ 进阶学习路线、大纲与目标

目录 一、C 学习路线 二、C 课程大纲与学习目标 (1)第一阶段:C 语言基础 (2)第二阶段:C 高级编程 (3)第三阶段:C 核心编程与桌面应用开发 (4&#xf…

Cpp03 — 类和对象、this指针

一、类和对象 类由两部分构成:1.成员变量2.成员函数 C中的struct兼容C的所有用法,同时C中把struct升级成类 注意:类中的成员函数和成员数据都是声明,不是定义 类里的函数不是存到了对象中,而是存在公共区域&#x…

8.7 PowerBI系列之DAX函数专题-排名逻辑的4种实现-rankx详解

需求 实现 1 度量值 序号1排名 rankx(all(成绩表),成绩表[scoreandname],sum(成绩表[scoreandname])) --按照组合列排序2 rankx稀疏排名 rankx(all(成绩表),成绩表[分数],sum(成绩表[分数]),desc,skip) 3 rankx稠密排名 switch(true(),hasonevalue(成绩表[姓名])&#xff…

CCD光斑图像质量分析仪的作用和工作原理

激光光斑的成型在激光加工中起着至关重要的作用,在实际加工中激光可以被变换成各种形状以满足加工需求,激光光斑的形状大致可以被分为四种:矩形、环形、椭圆形、线形。矩形的激光光斑适用于激光切割、激光焊接,环形的激光光斑适用…

契约测试之 - 使用Pact-JS编写契约测试

契约测试是一种通过对每个应用程序进行孤立检查,以确保其发送或接收的消息符合在“合同”中记录的共享理解的集成点测试技术。对于通过HTTP进行通信的应用程序,这些“消息”将是HTTP请求和响应,而对于使用队列的应用程序,则是放入…

代码版本管理工具 git

1. 去B站看视频学习,只看前39集: 01-Git概述(Git历史)_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows下载安装Git官…

《入门级-Cocos2d 4.0塔防游戏开发》---第三课:欢迎界面开发(一)

目录 一、开发环境介绍 二、开发内容 三、显示效果 四、知识点总结 4.1 场景转场 4.2 场景转场流程 4.3 MenuItemSprite和Sprite区别 一、开发环境介绍 操作系统:UOS1060专业版本。 cocos2dx:版本 环境搭建教程: 统信UOS下配置安装cocos2dx开…

Packet Tracer – 配置系统日志和 NTP

Packet Tracer – 配置系统日志和 NTP 目标 第 1 部分:配置系统日志服务 第 2 部分:生成日志记录事件 第 3 部分:手动设置交换机时钟 第 4 部分:配置 NTP 服务 第 5 部分:验证带时间戳的日志 拓扑图 场景 在本…

js的变量

目录 变量 var和let 1.for循环中的声明 2.暂时性死区 3.全局声明 4.条件声明 const声明 变量 java是一种强数据类型语言,对数据类型要求高,要声明清楚变量的类型 数据类型 变量名 值 -----> int a 10 而javaScrit是一种弱类型语言,在声明变…

mac cli文件管理器

背景 最近研究了一下在控制台查看文件的插件ranger, 官方的解释是:一个cli下的文件管理器。觉得效果也很酷炫,所以在此展示一下。 安装 brew install ranger配置生成 建议第一次使用的时候使用 ranger --copy-configall将会在~/.config/ranger目录输…

如何做好IT类的技术面试

目录 一、IT行业的招聘渠道 二、如何做好技术面试官 三、谈谈IT行业如何做好招聘工作 四、面试IT公司的小技巧 五、面试有哪些常见的问题 六、关于面试的一些建议 面试可能是我们每个人都必须会遇到的事情,而技术面试更具有专业性,以下会从几个方面…

实现一个简单的前端MVVM框架类似VUE

在本篇博客中,我们将使用原生JavaScript实现一个简单的前端MVVM框架,类似于VUE。MVVM是Model-View-ViewModel的缩写,是一种用于构建现代化、可维护的前端应用程序的架构模式。MVVM框架通过数据绑定和组件化的方式实现了视图与数据的双向绑定&…

【Docker】使用docker-maven-plugin插件构建发布推镜像到私有仓库

文章目录 1. 用docker-maven-plugin插件推送项目到私服docker1.1. 构建镜像 v1.01.2. 构建镜像 v2.01.3. 推送到镜像仓库 2. 拉取私服docker镜像运行3. 参考资料 本文描述了在Spring Boot项目中通过docker-maven-plugin插件把项目推送到私有docker仓库中,随后拉取仓…

读发布!设计与部署稳定的分布式系统(第2版)笔记25_互联层之路由和服务

1. 控制请求数量 1.1. 这个世界可以随时摧毁我们的系统 1.1.1. 要么拒绝工作 1.1.2. 要么扩展容量 1.1.3. 没有人会在与世隔绝的环境中使用服务,现在的服务大多必须处理互联网规模的负载 1.2. 系统的每次失效,都源自某个等待队列 1.3. 每个请求都会…