一、接口组成:请求+返回
接口请求 = 请求的URL + 请求头(User-Agent、Content-Type) + 请求方法(GET/POST/PUT/DELEte)+ 请求参数(拼接在URL 后面/请求的body中)
二、接口测试关注点
三、postman测试接口
1、postman模拟接口请求:
①collections:存放单个测试接口
②动态变化部分引用变量:如,测试环境{{server_ip}}、{{token}}等
2、测试环境env配置:
配置环境路径,key-value方式,后面测试时直接使用该env,更换测试环境也只用调整value,或者保存多个环境信息,直接切换对应env即可
3、postman加载外部数据驱动文件:
定义外部数据文件,后缀.csv或.json
如果是csv文件,第一行为变量名,后面2...N定义变量值(每一行是一个case)
注意:变量名和值一一对应
①case_desc:测试点描述
②arg:接口请求的参数名称
③4个通用的测试点预期检查,定义为response_code,response_message,errCode,errMsg
如果是json文件,写成数组,数组的每一条json串就是一个case,其中key是变量名,value是变量值
①case_desc:测试点描述
②arg:接口请求的参数名称
③4个通用的测试点预期检查,定义为response_code,response_message,errCode,errMsg
4、加载外部数据文件
①通过Collection Runner加载外部数据文件,点击collection的【Run】按钮,进入Runner界面
②迭代次数Iteration(可以理解为case数),postman会自动加载数据文件的case数,Data处选择外部数据文件载入,点击底部的【运行】按钮执行即可
注意:有的版本Data File Type默认为csv格式,选择csv文件文件加载即可;如果为json类型,需下拉选择为application/json类型,再加载json数据文件。
4、Tests断言:
通用断言:http状态码、message、errCode和errMsg,语法为JavaScript
try{
var jsonData = JSON.parse(responseBody)
if (data.response_code !== "")
tests[data.case_desc+ "-验证后台返回response code是否'"+data.response_code+"'(实际='"+responseCode.code +"')"] = responseCode.code === data.response_code;
if (data.response_message !== "")
tests[data.case_desc+ "-验证后台返回response message是否'"+data.response_message+"'(实际='"+responseCode.name +"')"] = responseCode.name ===data.response_message;
if(data.errCode !== "")
tests[data.case_desc+ "-验证接口返回errCode是否'"+data.errCode+"'(实际='"+jsonData.errCode +"')"] = jsonData.errCode ===data.errCode;
if(data.errMsg !== "")
tests[data.case_desc+ "-验证接口返回errMsg是否'"+data.errMsg+"'(实际='"+jsonData.errMsg +"')"] = jsonData.errMsg ===data.errMsg;
}catch(error) {
tests["模块名称-接口名称,后台返回response异常(返回"+responseCode.code+" "+responseCode.name+")"]=false;
console.log("Response为:");
console.log(responseBody);
}
①responseBody:获取接口请求响应的body内容, JSON.parse(responseBody) // json字符串转化为json对象
②data:获取外部数据文件中的变量值, 通过【data.变量名】方式引用
5、查看结果
通过【Collection Runner-Run Results】界面查看断言的结果
①标记为PASS:表示实际与预期的检查一致
②标记为FAIL:表示实际与预期的检查不一致