使用postman做简单接口测试
目录:
一、认识postman
1.总体结构
2.请求和响应
3.查看请求的params,查看请求头、请求体
4.body的几种参数上传
二、常用操作
1.如何保存请求
2.如何导入请求数据
三、进阶
1.如何使用环境变量
2.断言
3.设置全局变量:设置环境变量/全局变量
四、runner批量运行
-------------------------------------
一、认识postman
1.总体结构
左边栏:sidebar :history 历史请求;collections:保存下来的请求。
右侧:builder :显示请求具体内容。可添加新请求。
2.请求和响应
3.查看请求的params,查看请求头、请求体
4.body的几种参数上传
(1)form-data
即multipart/form-data,它将表单的数据组织成Key-Value形式,用分隔符(可任意设置)处理成一条消息。
既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;
由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
(2)x-www-form-urlencoded
即application/x-www-from-urlencoded,将表单内的数据转换为Key-Value。如,name=Lily&age = 23
(3)raw
可以上传任意格式的【文本】,可以上传text、json、xml、html等
(4)binary
即Content-Type:application/octet-stream,只可以上传二进制数据,通常用来上传文件。由于没有键值,所以一次只能上传一个文件。
注:
multipart/form-data与x-www-form-urlencoded区别
multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;当设置multipart/form-data,http会忽略 contentType 属性。
x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。不能用于文件上传。不同的field是用&区分开的。
二、常用操作
1.如何保存请求。Request Name 是保存的请求名字。All collections 显示所有已经创建好的收藏夹。Create collection可以新建一个收藏夹。
2.如何导入请求数据。
有四种方式。常用的是Import File 、Paste Raw Text
三、进阶
1.如何使用环境变量。设置--Manage Environment,可以新增一个环境变量,点击其中一个环境,可以编辑添加字段,来设置该环境中的变量。
使用环境变量中的参数,格式是{{}},如{{host}} ,这样可以只切换不同的环境变量,来达到不同环境测试同一个接口的目的。
2.断言
1).检查response的body中是否包含字符串
tests["测试点"] = responseBody.has("需要查找的字符串");
注:当json中value为integer时,需要查找的值可以不带双引号,
tests["xxx"]xxx代表的是你测试点的名字,可以是中文
tests["xxx"]xxx在一个脚本中如果出现多次,那么只执行第一个,所以尽量不要重复
2).检查Response Body是否等于字符串
tests["测试点"] = responseBody === "Response Body返回的内容";
这个可以用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性,
接口返回:"hello"
tests["返回为hello"] = responseBody === "hello";
tests["返回为hello"] = responseBody === "he";
第二个会返回False,必须完全匹配
3)检查response body中是否包含某个string
tests["Body matches string"] = responseBody.has("string_you_want_to_search");
4).检查响应时间
tests["Response time 小于200毫秒"] = responseTime > 200;
tests["Response time 大于200毫秒"] = responseTime < 200;
5).检查状态码
这个是检查http请求状态码
tests["Status code is 200"] = responseCode.code === 200;
注:
这里的状态码,跟上面我们用的json里边的"status"不是一回事
6).检查json的值
var jsonData = JSON.parse(responseBody);
tests["Your test name"] = jsonData.value === 100;
如:
tests["状态码为301"] = jsonData["status"] == "301";
tests["message"] = jsonData["message"] == "购买商品库存不足";
tests["list"] = jsonData["lists"][0] == "11";
7)转换XML body为JSON对象
var jsonObject = xml2Json(responseBody);
tests["Body is correct"] = responseBody === "response_body_string";
8.测试response Headers中的某个元素是否存在(如:Content-Type)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
//getResponseHeader()方法会返回header的值,如果该值存在
或者:
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
上面的方法,不区分大小写。下面的方法,要区分大小写。
3.设置全局变量:设置环境变量/全局变量
postman.setEnvironmentVariable("key", "value");
postman.setGlobalVariable("key", "value");
从body中获取
var jsonData =JSON.parse(responseBody);//获取body中返回的所有参数
postman.setEnvironmentVariable("appKey",jsonData.data.appKey);//把返回参数中的keys设置为环境变量
从header中获取
var data =postman.getResponsHeader("Access-Token")
postman.setEnvironmentVariable("accessToken",data)
执行上图请求后,如果环境变量中原来有此字段,则会更新,如果没有此字段,则会新增一条记录。
在请求中使用{{}}的格式来使用该参数。如{{sessionToken}}
四、runner 批量运行
可以选择需要测试的集合Collection,Environment可以选择相应的环境变量,iteration处还可以设置迭代次数,Delay设置请求的延迟时间。
点击Run按钮后,出现测试结果。