Postman (二)

一、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 一致


image
image
image

4.2、csv 数据

准备csv数据,第一行为变量名,下面为每次迭代的值

userName,passWord
user001,u001
user002,u002
user003,u003

引入的变量名 一定和csv 文件一致


image
image

原文地址:https://www.cnblogs.com/niunai/p/15472594.html