【Postman】API 接口测试
Script
Postman 提供了一个强大的基于 Nodejs 的运行环境,允许开发人员在请求或集合中填加动态行为,如编写测试用例,动态参数,请求之前传递数据等。Postman 提供了两个事件来填加 Javascript 代码来实现特定行为。分别为
1.pre-request script 在请求发送之前
2.test script 在响应完成之后
简单的测试用例
响应参数
{"statusCode":200,"result":["swimwear","bikinis","two-piece outfits","tops","dresses","tees"],"msg":""}
测试脚本
// example using pm.response.to.have pm.test("response is ok", function () { pm.response.to.have.status(200); // 响应状态码必须为200 }); pm.test("response must be valid and have a body", function () { // assert that the status code is 200 pm.response.to.be.ok; // 响应体是否OK pm.response.to.be.json; // 响应体是否为 json 格式,它也会较验响应体是否存在,如果写了这个,上面这个断言就没有必要了 }); pm.test("response is correct", function () { var jsonData = pm.response.json(); pm.expect(jsonData.statusCode).to.equal(200); // 响应体 statusCode 字段值等于200,区分数据类型,如响应的字段串200,那这里就较验通不过 pm.expect(jsonData.result).to.be.an('array') // 响应体 result 字段必须是个数组 }); // json schema 较验 var schema = { "items": { "type":"string" } } pm.test("响应参数格式不合法", function () { var jsonData = pm.response.json(); pm.expect(tv4.validate(jsonData.result, schema)).to.be.true; // scheme 较验是通过 tv4 这个类库来实现的,Postman 内置了它,并不需要额外填加 })
pm.response 表示获取到响应体
pm.response.to.be 声名预定义的规则,如 pm.response.to.be.json 表示响应体为 json 格式。
变量
变量有5种类型,从外到里优先级从低到高
变量读取通过双大括号包围 {{variable}}
变量传递可以通过设置设量来实现
pm.globals.set() // 全局变量 pm.environment.set() // 环境变量 pm.variables.set(); // 本地变量
同时还提供了三个动态变量
{{$guid}} //添加v4风格的guid {{$timestamp}} //添加当前时间戳 {{$randomInt}} //添加0到1000之间的随机整数
循环和分支
在实现真实逻辑时,往往需要根据不同的情况做不同的操作,执行不同的接口。可以通过
postman.setNextRequest("request_name")
request_name 为自已时表示循环,切注循环一定要有结束条件
postman.setNextRequest(null) //这个表示结束执行流程
参考
断言脚本语法:https://www.chaijs.com/api/bdd/
JSON Scheme 自动生成:https://www.jsonschema.net/
相关推荐
huimeiad 2020-11-23
充满诗意的联盟 2020-08-23
ljsfighting 2020-06-05
bbccaaa 2020-06-04
Alassad 2020-05-20
Teamomc 2020-06-28
82387067 2020-11-03
bbccaaa 2020-11-03
ljsfighting 2020-10-31
小马的学习笔记 2020-10-23
chenhaimeimeng 2020-09-15
82387067 2020-08-15
bbccaaa 2020-07-28
ljsfighting 2020-07-28
ljsfighting 2020-07-18
ljsfighting 2020-07-05
Alassad 2020-06-29