一、postman软件功能
1、模拟各种HTTPrequests:( 创建测试用例)
2、Collection功能(测试集合):(创建测试用例集合)
通过collection的归类,我们可以良好的分类测试软件所提供的API. 例如把同一个项目的请求放在一个Collection里,Collection里面也可以再建文件夹。 Collection里面也可以再建文件夹。而且Collection还可以Import或是Share出来,让团队里面的所有人共享你建立起来的Collection。
3、内置测试脚本语言:
支持编写测试脚本,可以快速的检查request的结果,并返回测试结果
4、设定变量与环境:
Postman可以自由设定变量与Environment,一般我们在编辑request,校验response的时候,总会需要重复输入某些字符,比如url,允许我们设定变量来保存这些值。并且把变量保存在不同的环境中。
二、变量设置:
把若干处出现多次的数值用一个变量表示,达到一次修改、多处生效的效果,便于修改和管理。
注意:使用{{variableName}}这样的形式访问变量,一个请求只能应用一个环境变量。
三、postman中的script
postman集成了一个强大的,基于nodejs的script引擎,借助它可以为requests和collections添加动态的行为。可以在流程中的pre-request script与test script中添加要执行的JavaScript代码,引用变量:
① 在发送request之前,编写pre-request script,定制化request。
② 收到response之后,用test script,处理返回的数据。
环境变量操作:
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");
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:
点击run就会开始执行测试,并输出测试结果。
这是我们要运行的集合或文件夹。运行集合时,集合中的所有请求都按它们在主应用中出现的顺序发送。这意味着每个文件夹都会运行,并且该文件夹内的每个请求都会被顺序执行。但是,我们可以通过使用setNextRequest()方法更改此顺序,以更贴近我们的工作流程。
此处选择运行集合中的请求时对应使用的环境。
该参数配置我们的集合将被运行的次数。通常通过使用不同的测试数据运行多次,从而来确保API的稳定性。
该参数配置依次运行每个请求,每个请求之间间隔侧时间,单位为毫秒。
这用于限制集合运行时的响应日志记录。默认情况下,一般调试目的,所有响应都会记录,但对于大型集合,可以更改此设置以提高性能。
提供集合运行时需要的数据文件。
默认情况下,集合运行器中的任何环境更改都不会反映回请求构建器中。
四、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