PostMan工具原理

alt

①postman点击send发送请求给服务器②,②服务器响应,对数据进行处理,然后返回给postman③对返回内容进行加工处理,把格式化后的内容显示出来

案例1 get请求

【1】创建用例集

alt

【2】添加请求 点击发送

alt

【3】 查看返回结果

alt

【4】 发送成功

alt

【提交表单数据】

使⽤ Postman 向 tpshop 商城 登录接⼝ 发送 登录请求

alt

【发送成功】

alt

【提交JSON数据】

发送IHRM项⽬的登录接⼝请求并查看响应结果

alt

PostMan断言

断言代码 书写在 Tests 标签页中。 查看断言结果 Test Results 标签页

1. 断言响应状态码

Status code:Code is 200

// 断言响应状态码为 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm:postman的实例。
test() postman实例的测试方法。 这个方法 有 2 个参数。
参1:"Status code is 200"。 这个参数可以任意修改,不影响 断言。
作用:在断言结束后,显示给用户,断言结果的提示文字。
参2:是一个 匿名函数 调用。
pm.response.to.have.status(200); 的意思是:
postman的响应结果中,应该有 响应状态码 200。 ———— 这里的 200 是 预期结果

alt

alt

2.断言包含某些字符串

Response body: Contains string

pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm:postman的实例。
test() postman实例的测试方法。 这个方法 有 2 个参数。
参1:"Body matches string"。 这个参数可以任意修改,不影响 断言。
作用:在断言结束后,显示给用户,断言结果的提示文字。
参2:是一个 匿名函数 调用。
pm.expect(pm.response.text()).to.include("string_you_want_to_search"); 的意思是:
postman 期望 响应文本中,应该包含 “你想搜索的字符串”(预期结果)

alt

3. 断言JSON数据

Response body: JSON value Check

pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
pm:postman的实例。
test() postman实例的测试方法。 这个方法 有 2 个参数。
参1:"Body matches string"。 这个参数可以任意修改,不影响 断言。
作用:在断言结束后,显示给用户,断言结果的提示文字。
参2:是一个 匿名函数 调用。
var jsonData = pm.response.json(); 将 整个 json响应体 赋值到 变量 jsonData 上。
pm.expect(jsonData.value).to.eql(100); postman 期望 json结果中 指定key 的值为 xxx
value 能取值:success、code、message
通过对比对jsondata的取值

alt alt

Postman断言工作原理

alt 在psotman软件的界面添加接口的请求方法,url地址,请求体,在postman的软件内部,会把url,请求体,请求头,请求方法封装成一个http请求协议的格式。给服务器发送http请求,服务器收到请求之后会解析请求,并给postman发送一个http响应,postman软件内部解析http响应执行Tests中的代码(断言),在Test results显示断言结果。

Postman 关联

当接口和接口之间,有依赖关系时,需要借助 postman 关联技术,来实现。 如: 登录接口 返回的 令牌数据,被 添加员工接口依赖。 添加员工接口 返回 员工id,被 查询员工接口依赖。

实现步骤

假定:接口B 产生的数据,被 接口A 依赖。

  1. 发送 接口B 请求,获取响应数据。

  2. 将 响应数据,放入公共容器(全局变量、环境变量)中

  3. 接口A 从 公共容器中,提取数据,发送请求。 alt

核心代码

// 1. 获取 响应数据,转为 json格式,保存到变量 jsonData中。
var jsonData = pm.response.json()
// 2.1 使用 全局变量做容器。
pm.globals.set("全局变量名", 全局变量值)
// 2.2 使用 环境变量做容器。
pm.environment.set("环境变量名", 环境变量值)
// 3. 在 postman 界面中(URL、请求头headers、请求体body) 提取 全局、环境变量 数据。
{{全局变量名}}/{{环境变量名}}

创建环境

  • 全局变量:在 整个postman中都可以使用的变量。不需要 单独创建环境。
  • 环境变量:在 特定的环境下,才能使用的变量。需要给此变量创建单独的环境。 alt alt alt

接口关联案例

  1. 使用 postman 关联,实现下面案例
 从获取天气接口,http://www.weather.com.cn/data/sk/101010100.html

获取返回结果中的城市名称

调用百度搜索接口: http://www.baidu.com/S?wd=北京 ,把获取到的城市名称,如:北京,作为请求参数

思路:

1. 发送 获取天气请求,获取响应结果
2. 从响应结果中,拿到城市名,存入 全局变量
3. 百度搜索接口从 全局变量中,取城市名,发送搜索请求。

Tests 代码:

// 1. 获取响应结果
var jsonData = pm.response.json()
// 2. 从响应结果中,提取 城市名
var city = jsonData.weatherinfo.city
// 3. 将城市名保存到 全局变量
pm.globals.set("glb_city", city)


alt alt

Postman 参数化

什么是参数化:

  • 将 测试数据,组织到 数据文件中,通过脚本的反复迭代,使用不同的数据,达到测试不同用例的目标。 应用场景:
  • 一般在测试同一个接口的不同 测试点时,只有测试数据不同。考虑使用 参数化。

数据文件简介

CSV:

  • 优点:数据组织格式简单 缺点:
    1. 不能测试 bool 类型。因为 postman 读取 csv后,将所有非数值类型数据,自动添加 ”“ 变为字符串
    1. 不能存储复杂数据类型(元组、列表、字典)。
    1. 不能实现 参数测试。
  • 应用场景:数据量较大,数据组织格式简单

alt

JSON: 优点:

    1. 可以测试 bool类型
    1. 能使用 复杂数据类型
    1. 可以实现 参数测试。 缺点:
  • 相同数据量,json文件要远大于 csv 文件。
  • 应用场景:数据量较少,数据组织格式复杂。需要进行 参数测试! alt

编写数据文件

  • CSV文件 alt
  • JSON文件 alt
  • 导入数据文件到postman

alt alt

读取数据文件数据

理论

  • 根据 使用位置 不同,有两种方法。
  • 第一种:请求参数(请求行、请求头、请求体)中,使用 数据文件中 的数据
  • csv文件:{{字段名}}; json文件:{{键名}}
  • 第二种:代码(Tests)中,使用 数据文件中 的数据
  • 使用 postman 内置的 关键字 data,索引 字段名 或 键名
  • csv文件:data.字段名; json文件:data.键名

案例

需求:批量查询 手机号 所属运营商,校验运营商数据正确性
接口: http://cx.shouji.360.cn/phonearea.php?number=13012345678
测试数据:
手机号: 13012345678 运营商: 联通 手机号: 13800001111 运营商: 移动 手机号: 18966778899 运营商: 电
信


alt alt alt alt alt

Postman 生成测试报告

  1. 导出用例集
  2. 如果测试使用了环境也需要导出
  • 安装 node.js
# 安装
双击 .msi 文件,一路下一步安装即可。无需特殊设定。
# 测试安装成功
npm -v
  • 安装 newman
# 安装newman
npm install -g newman
# 测试安装成功
newman -v
# 安装newman插件 - 扩展版
npm install -g newman-reporter-htmlextra

导出用例集

导出

alt alt

导入

alt alt alt

导出环境文件

如果,测试用例脚本中,包含 环境使用。必须要导出 环境文件!!! alt alt

Newman自动生成测试报告

# 完整命令
newman run 用例集文件.json -e 环境文件.json -d 数据文件.json/.csv -r htmlextra --reporterhtmlextra-export 测试报告名.html
-e 和 -d 是 非必须的。
如果没有使用 环境,不需要指定 -e
如果没有使用 数据文件(做参数化),不需要指定 -d

  • 示例1: 指定 用例集文件 和 数据文件 alt
newman run 第三天作业.postman_collection.json -d login.json -r htmlextra --reporter-htmlextraexport 作业的测试报告.ht
  • 示例2:指定 用例集文件 和 环境文件

alt

newman run postman关联练习1.postman_collection.json -e 测试环境.postman_environment.json -r
htmlextra --reporter-htmlextra-export 关联练习测试报告.html

alt alt