软件测试 | 自动化测试文件上传

518 篇文章 3 订阅
514 篇文章 2 订阅

在服务端自动化测试过程中,文件上传尅性的接口对应的请求头中的content-type为multipart/from-data; boundary=... ,对于这种类型的接口,使用Python的requests或者Java的RestAssured可实现接口测试。

实战演示

实战演示代码如下(Python版和Java版)。

(1)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.test
{
   "args":{},
   "data":"",
   "files":{
       "hogwarts_file":"123"
   },
   "form":{},
   //省略
   "url":"https://httpbin.ceshiren.com/post"
}

(2)Java演示代码

Java程序中需要使用given()方法提供的multipart()方法实现接口测试,multipart()方法中第一个参数为name,第二个参数是一个File实例对象。File实例化过程中,需要传入上传文件“绝对路径+文件名”。

import java.io.File;
​
import static io.restassured.RestAssured.*;
​
public class Requests{
     public static void main (Sring[] args){
          given().multipart("hogwartsFile",new File("绝对路径+文件名")).
                when().post("https://httpbin.ceshiren.com/
 post").then().log().all();
     }
}

响应内容如下:

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

使用抓包工具Charles抓取接口参数传递的数据,如图7-5所示。如果是Java程序,name传递的内容为multipart()方法的第一个参数;Python程序中,files参数传递的内容为字典的key值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值