一、Postman 请求生命周期
在 Postman 中,一个完整的 Postman 请求生命周期,除了常规的请求(request)和响应(response),还包括前置请求脚本(pre-request script)和后置测试脚本(tests script)。Postman 包含一个基于 Node.js 的强大运行态(runtime),允许用户在 pre-request script 和 tests 事件中编写 JavaScript 代码,允许您向请求和集合添加动态行为。这允许您编写测试套件、构建可以包含动态参数的请求、在请求之间传递数据等等。
如我们在Postman请求中 一个接口的响应做为下一个接口的入参
二、断言
我们进行接口测试时,添加断言时必不可少的,
断言:就是判断测试的结果与预期返回是否一致,如果一致,我们即这个测试用例通过!
Status code is 200 检查返回的状态码是否为200
Response body:Contains string 检查响应中包括指导字符串
Response body:JSON value check 检查响应中Json的值
Response body:is equal to a string 检查响应是否等于一个字符串
Response headers:Content-Type header check 检查是否包含响应头Content-Type
Response time is less than 200ms 检查响应时间是否小于200ms
我们常用的断言一般有:
断言响应状态码
断言响应内容
断言响应时间范围
更多参考:官方文档
2.1、断言状态码
我们可以通过接口响应的状态码 来判断一个请求的状态,我们这里通过判断状态码 是否返回 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
2.2、断言响应内容
// 检查响应主体是否包含一个字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
// 检查响应正文中的特定值
pm.test("Person is Jane", () => {
const responseJson = pm.response.json();
pm.expect(responseJson.name).to.eql("Jane");
pm.expect(responseJson.age).to.eql(23);
});
2.3、断言响应时间
pm.test("Response time is less than 200ms", () => {
pm.expect(pm.response.responseTime).to.be.below(200);
});
2.4、全局断言+动态参数
有些断言,如果是每一个请求都需要加的,我们就可以把他抽离出来,放在集合里的 TestScript 里面,
然后在这个集合下面的每一个请求 都会包括此断言
三、运行一个集合
我们前面都是对单个api的测试,如果想一次性执行多个api 我们可以把多个api放在集合里,整体运行,可以整体对 迭代次数、延迟时间 进行配置。
3.1 构建工作流
在我们执行一个集合的时候,集合下请求的顺序 就是请求在Collection中的显示排列的顺序,当我们想按照自己的顺序执行时,我们可以拖拽顺序排列,但是有时候,当集合里面的请求非常多的时候,我们每次拖动可能会比较麻烦,而且后面可能也不会太准确,我们就可以用另一种方法脚本设置
先下载官方案例文件:collection.json
官方文档:构建工作流
如我们想要执行顺序:Request 1 > Request 4 > Request 3 > Request 2
我要需要用到一个方法,指向请求顺序
postman.setNextRequest('Request 3')
我们要在Request 1 请求的 Test Script里面指定 下一个请求
Request 4 指向 Request 3
Request 3 指向 Request 2
Request 2 是最后一个响应 我们要终止了 用到 :
postman.setNextRequest(null)
四、数据驱动
当一个接口需要测试很多不同的参数组合时,若采用逐个修改参数值来测试的方式,则效率会比较低。此时,需要每次迭代执行传入不同的参数进行测试,通过导入外部数据文件进行参数化,即可实现大量数据的自动化执行。
外部数据保存 方式我们可以有 csv 文件、json 文件。
4.1、json文件
创建一个josn 文件,准备以下数据
[
{
"username":"xiaoming",
"password":"123456"
},
{
"username":"liubei",
"password":"a123"
},
{
"username":"zhangsan",
"password":"b123"
}
]
创建一个文件,在文件下创建一个请求,配置两个参数,
引入两个变量,变量名字一定要和josn文件里面的key 一致
4.2、csv 数据
准备csv数据,第一行为变量名,下面为每次迭代的值
userName,passWord
user001,u001
user002,u002
user003,u003
引入的变量名 一定和csv 文件一致