熟悉HTTP协议,能容易的配置一个简单的http请求,这里就不介绍了。下面是Postman的主要功能:javascript
Postman用于注入请求地址、请求参数、请求实体、请求头中占位符{{}}
中的值。java
postman的变量配置,变量类型分为一下3种。每个变量包含key值,初始化值,当前值三个可编辑项。json
变量类型 | 做用范围 | 占位符取值优先级 | 脚本编辑 | 导入导出 |
---|---|---|---|---|
普通变量 | 当前单个请求 | 最高 | 支持 | 不支持 |
环境变量 | 启用下的全部请求 | 中 | 支持 | 支持 |
全局变量 | 全部请求 | 最低 | 支持 | 支持 |
见变量操做语法后端
以请求为导线,分为Pre-request Script
和Tests
。
以请求组合分类为导线,分为collection级别、folder级别和request级别。
以上两种分类的组合共有6个脚本设置入口。api
Pre-request Script
在请求前执行Tests
在响应后执行时间线(上先下后顺序) | l类别 |
---|---|
请求接口前 | Pre-request Script(collection级别) |
请求接口前 | Pre-request Script(folder级别) |
请求接口前 | Pre-request Script(request级别) |
请求接口 | |
请求返回后 | Tests(collection级别) |
请求返回后 | Tests(folder级别) |
请求返回后 | Tests(request级别) |
<div id="变量操做语法"></div>安全
变量类型 | set值语法 | get值语法 | 清除语法 |
---|---|---|---|
普通变量 | pm.variables.set("key", "value") |
pm.variables.get("key") |
pm.variables.unset("variable_key") |
环境变量 | pm.environment.set("key", "value") |
pm.environment.get("key") |
pm.environment.unset("variable_key") |
全局变量 | pm.globals.set("key", "value") |
pm.globals.get("key") |
pm.globals.unset("variable_key") |
异步发送Get请求https://postman-echo.com/getless
pm.sendRequest("https://postman-echo.com/get", function (err, response) { console.log(response.json()); });
根据HTTP状态码断言前后端分离
pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]); });
根据响应状态描述文字断言异步
pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); });
断言文本响应结果包含某个字符串函数
pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });
断言文本响应实体匹配字符串
pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });
pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); });
pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });
var jsonObject = xml2Json(responseBody);
var schema = { "items": { "type": "boolean" } }; var data1 = [true, false]; var data2 = [true, 123]; pm.test('Schema is valid', function() { pm.expect(tv4.validate(data1, schema)).to.be.true; pm.expect(tv4.validate(data2, schema)).to.be.true; });
公司软件项目做先后端分离,有独立的后台接口。后台接口开发过程避免不了接口测试。
因为安全性设计,请求接口须要进行参数签名。公司内部已提供简单的客户端工具,封装了签名过程,调用接口主要写接口地址、接口方法名、业务参数三中数据。但还存如下问题:
<span style="color: red">客户端工具不能记录历史请求,复用历史请求
</span>
若是切换到Postman做为接口调用工具,须要具有如下条件:
若是Postman容许,具有如下条件更好:
问题序号 | 解决方法 |
---|---|
a | 编写Tests脚本,存储Token到环境变量 |
b | 使用Postman请求参数占位符功能,请求前自动从环境变量获取并注入 |
c | 同问题b的解决方法 |
d | 编写Pre-request Script脚本,进行参数签名。MD5使用到内置函数 CryptoJS.MD5() |
e | 基于JavaScript的封装,提供通用JS脚本做为一个collection级别的变量,在不一样的请求的Pre-request Script脚本中使用eval函数进行引入 |