postman 接口测试元素
发送区
- params
get请求传参 - authorization
postman自带的鉴权功能 - headers
请求头 - body
post请求的传参输入- none:没有参数
- form-data:既有文件也有键值对
- x-www-form:只传键值对
- raw: 传 json,txt ,xml,html.js
- binary: 将文件以二进制传输
- pre-request: script 接口请求之前的脚本,js
- tests: 断言的代码
- cookies
postman的cookies管理器 - code : 用于编写生成接口自动化脚本
接受区
- body
- pretty: json格式展示
- raw: 文本格式展示
- preview: 以网页格式展示
- cookies:返回的cookie信息
- headers:响应头
- test results:断言结果
- status:状态码
- time:耗时
- size :字节数
postman内置动态参数
用于接口测试时的动态写入的参数。postman内置的一些参数,按需适用。如一个接口执行多次,传输不同的内容,如名称。
时间戳: {{KaTeX parse error: Expected 'EOF', got '}' at position 10: timestamp}̲} 生成0~1000随机整数:…randomInt}}
生成一个GUID字符串: {{$guid}}
全局变量与环境变量
用于多测试环境情况,运行时不需要一个个用例修改地址。
可创建多环境变量:test1, test2,test3,然后执行的时候选择如 test1, 则适用 test1中的具体变量值执行用例。
postman右上角可创建和选择。
环境变量也是全局变量,只是一般用于环境。
使用方法 {{IP}} {{name}} {{变量名称}}
接口关联
json提取器
通过断言获取一个动态的全局变量
断言功能可以帮助获取到所需信息,如上一接口的返回值需要在另一接口中使用。
模拟示例:
某接口返回为json格式的键值对,{“access_key”:"xxxxxxxx","time":"xxxx"}
//通过responseBody获取接口返回的值
//使用json.parse()转换为json格式
var jsvalue = json.parse(responseBody)
// console.log() 使在控制台中输出,可以作为临时验证
console.log(jsvalue)
console.log(jsvalue.access_key)
//将提取的值保存为全局变量,可在右侧选择 set a global variable 获取方法函数
pm.globals.set("access_token",jsvalue.access_key);
//获取到的 access_token 变量可在其他用例中使用, 引用 {{access_token}}
正则表达式提取器
模拟示例:
某接口返回为json格式的键值对,{“tag”:{"id":"xxxxxxxx","time":"xxxx"}}
//通过responseBody获取接口返回的值
//使用responseBody.match 对获取的值进行匹配,匹配获取到的为数组
//使用 new RegExp('规则内容') 创建一个新的正则表达式规则
var flagid = responseBody.match(new RegExp('"id":(.+?),'))[1]
//上述规则匹配获取的是(.+?)中的内容,输出数组中的1位置的值
// console.log() 使在控制台中输出,可以作为临时验证
console.log(flagid)
//将提取的值保存为全局变量,可在右侧选择 set a global variable 获取方法函数
pm.globals.set("flagid",flagid);
//获取到的flagid 变量可在其他用例中使用, 引用 {{flagid}}
cookies提取器
var token = postman.getResponseCookies('token');
pm.globals.set("token",token);
断言/检查
有对应的断言模块可选择,点击即可出现对应代码,断言有针对单个测试用例的,也有针对整个用例集的全局断言(用例集右键编辑,tests设置全局断言)
- 断言返回码检查(Status code:code is 200) 一般用于状态码检查/断言
- 断言返回结果中包括有一个指定的字符串(Response body: Contains string) 一般用于业务断言
- 对返回的结果做json字段数据(键值对)检查(Response body: JSON value check) 一般用于业务断言
- 断言返回的结果等于一个字符串(Response body: Is equal to a string) 一般用于业务断言,精确断言时可与pre-request 前置脚本一起使用
- 断言响应头中包含指定的响应头(Response headers: Content-Type header check) 不常用
- 断言接口请求的时间不少于200毫秒(Response time is less than 200ms 一般用于性能断言
- 断言一个post请求的返回状态码是否在指定的范围里(Status code: Successful POST request) 不常用
- 断言返回的状态码信息中包含指定的字符串(Status code:code name has string) 不常用
运行报告
如需生成一个具有可读性的报告,而不是postman运行后的结果查看,可安装 newman 进行接口用例运行并生成报告。
- 安装 newman
- 导出 postman 接口用例为 json(注意将环境变量和全局变量也导出保存)
- 执行 newman 生成报告
newman run "d:\\apitest.json" -e "d:\\env.json" -g "d:\\global.json" -r cli,html,json,junit --reporter-html-export "d:\\apitest_report.html"
如有需要,newman 亦可于持续集成平台,如 jenkins 做集成,作为接口自动化定时执行,