在服务端自动化测试过程中,文件上传尅性的接口对应的请求头中的 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 值。
更多软件测试行业资讯可关注主页了解详情哦~
评论