一、postman软件功能
1、模拟各种HTTPrequests:( 创建测试用例)
2、Collection功能(测试集合):(创建测试用例集合)
通过collection的归类,我们可以良好的分类测试软件所提供的API. 例如把同一个项目的请求放在一个Collection里,Collection里面也可以再建文件夹。 Collection里面也可以再建文件夹。而且Collection还可以Import或是Share出来,让团队里面的所有人共享你建立起来的Collection。
3、内置测试脚本语言:
支持编写测试脚本,可以快速的检查request的结果,并返回测试结果
4、设定变量与环境:
Postman可以自由设定变量与Environment,一般我们在编辑request,校验response的时候,总会需要重复输入某些字符,比如url,允许我们设定变量来保存这些值。并且把变量保存在不同的环境中。
二、变量设置:
把若干处出现多次的数值用一个变量表示,达到一次修改、多处生效的效果,便于修改和管理。
- 环境变量:最常见的是将测试 URL 进行定义成变量的形式,这样随着你的域名怎么,变URL 就不用变更。除此之外,也可以将一些敏感的测试值定义为环境变量,比如密码。
注意:使用{{variableName}}这样的形式访问变量,一个请求只能应用一个环境变量。
- 全局变量:用法与环境变量类似,只是对于 Postman 来说,Globals 仅有一组。
- Collection变量:在一个集合以及集合下面的目录中的请求都可以使用。
- 数据变量: CSV或JSON文件。
三、postman中的script
postman集成了一个强大的,基于nodejs的script引擎,借助它可以为requests和collections添加动态的行为。可以在流程中的pre-request script与test script中添加要执行的JavaScript代码,引用变量:
① 在发送request之前,编写pre-request script,定制化request。
② 收到response之后,用test script,处理返回的数据。
- Pre-request Script 可以设置变量,并且会修改current value 值。
环境变量操作:
pm.environment.get("variable_key");
pm.environment.set("variable_key", "variable_value");
集合变量操作:
pm.collectionVariables.get("variable_key");
pm.collectionVariables.set("variable_key", "variable_value");
全局变量操作:
pm.globals.get("variable_key");
pm.globals.set("variable_key", "variable_value");
普通变量操作:
pm.variables.get("variable_key");
pm.variables.set("variable_key", "variable_value");
- tests:对结果进行校验
1.检查response body中是否包含某个string
tests["Body matches string"] = responseBody.has("string_you_want_to_search");
注意:"Body matches string" 需唯一。
2.检测JSON中的某个值是否等于预期的值
var data = JSON.parse(responseBody);
tests["Your test name"] = data.value === 100;
JSON.parse()方法,把json字符串转化为对象。parse()会进行json格式的检查是一个安全的函数。
如:检查json中某个数组元素的个数(这里检测programs的长度)
var data = JSON.parse(responseBody);
tests["program's lenght"] = data.programs.length === 5;
3.检查response body是否与某个string相等
4.转换XML body为JSON对象
var jsonObject = xml2Json(responseBody);
tests["Body is correct"] = responseBody === "response_body_string";
5.测试response Headers中的某个元素是否存在(如:Content-Type)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
//getResponseHeader()方法会返回header的值,如果该值存在
或者:
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
上面的方法,不区分大小写。下面的方法,要区分大小写。
6.验证Status code的值
tests["Status code is 200"] = responseCode.code === 200;
7.验证Response time是否小于某个值
tests["Response time is less than 200ms"] = responseTime < 200;
8.name是否包含某个值
tests["Status code name has string"] = responseCode.name.has("Created");
9.POST 请求的状态响应码是否是某个值
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
10.设置下一个运行的请求
postman.setNextRequest()
三、data文件编辑
1.csv
第一行输入变量名称,(注意与request中引用的名称一致);
第二行输入对应的变量值,如下图
2.json
需要注意json的转义与压缩,json的key一定要与变量名一致,json的格式是数组形式 。json文件如下图所示:
三、Collection runner
点击collection右边的run按钮,打开Collection Runner:
- 选择一个环境变量;
- 选择data文件;
- 选择要执行的request;
点击run就会开始执行测试,并输出测试结果。
- Collection/Folder
这是我们要运行的集合或文件夹。运行集合时,集合中的所有请求都按它们在主应用中出现的顺序发送。这意味着每个文件夹都会运行,并且该文件夹内的每个请求都会被顺序执行。但是,我们可以通过使用setNextRequest()方法更改此顺序,以更贴近我们的工作流程。
- Environment
此处选择运行集合中的请求时对应使用的环境。
- Iterations
该参数配置我们的集合将被运行的次数。通常通过使用不同的测试数据运行多次,从而来确保API的稳定性。
- Delay
该参数配置依次运行每个请求,每个请求之间间隔侧时间,单位为毫秒。
- Log Responses
这用于限制集合运行时的响应日志记录。默认情况下,一般调试目的,所有响应都会记录,但对于大型集合,可以更改此设置以提高性能。
- Data
提供集合运行时需要的数据文件。
- Persist variables
默认情况下,集合运行器中的任何环境更改都不会反映回请求构建器中。
四、Collection导出、执行测试
1.点击…选择export,将当前collection导出成json文件;
2.导出环境变量;
3.导出全局变量
4.执行
newman run 文件地址
–e 环境变量文件地址
–g全局变量文件地址
-d 数据文件地址
–r html 输出html报告
-n 设置迭代次数
--timeout (ms) 设置整个集合运行完成执行的时间
5.同时执行多个collection ??
五、postman plan comparison
Postman免费版与付费版之分,参考链接:https://www.postman.com/pricing
Features | Free | Team | Business | Enterprise |
团队规模 | 1 | 1-19 | 20-99 | 100+ |
合作 | 无限工作区和 25 个共享请求 | 无限工作区和共享请求 | 无限工作区和共享请求 | 无限工作区和共享请求 |
单点登录 | × | × | √ | √ |
角色和权限 | × | × | √ | √ |
专用工作区 | × | × | 不限 | 不限 |
APIs最大数量 | 3 | 10 | 50 | 100 |
最大集成数量 | 有限 | 10 | 50 | 100 |
API可调用最大次数(每月) | 1000 | 10000 | 100000 | 1000000 |
公共 API 文档(每月页面浏览次数) | 1000 | 10000 | 100000 | 1000000 |
模拟服务器调用次数(每月) | 1000 | 10000 | 10000 | 10000 |
监视API调用次数(每月) | 1000 | 10000 | 10000 | 10000 |
恢复已删除集合 | 不支持 | 30天内 | 90天内 | 90天内 |
自定义域 | 不支持 | 1 | 5 | 25 |
静态ip地址 | × | × | √ | √ |
审核日志 | × | × | √ | √ |
报告 | × | × | × | √ |
培训和入职 | 免费资源 | 免费资源 | 客户成功入职 | 客户成功入职和定制培训 |
支持选项 | 社区 | 电子邮件 | 优先电子邮件(SLA:2 个工作日) | 优先电子邮件和电话(SLA:1 个工作日) |
支付选项 | 无 | 仅限信用卡 | 信用卡或开票(仅限年) | 信用卡、开票、自定义付款条款 |
条款 | Standard EULA | Standard EULA
| Standard EULA
| Standard EULA
|
感谢 yimi