接口测试Day2:了解Postman工具与基本使用方法

前言


接口测试的常用工具Postman的使用

Postman的基本使用

Postman入门

Postman 是一款接口调试工具

特点:支持MAC、Windows和Linux

image-20231008132140126

image-20231008132259954

Postman发送GET请求

image-20231008132516100

Postman发送POST请求

image-20231008132603572

Potman 断言

Postman 断言简介

  • 让 Postman工具代替人工自动判断预期结果和实际结果是否一致
  • 断言代码书写在 Tests 标签页中,通过Test Results 标签页查看断言结果

Postman 常用断言

断言响应状态码

Status code:Code is 200

1
2
3
4
5
6
7
8
9
10
11
// 断言响应状态码为 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 是预期结果。

image-20231008133247779

断言包含某字符串

Response body: Contains string

1
2
3
4
5
6
7
8
9
10
11
12
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 期望响应文本中,应该包含 “你想搜索的字符串”(预期结果)

image-20231008133446020

断言JSON数据

Response body: JSON value Check

1
2
3
4
5
6
7
8
9
10
11
12
13
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

image-20231008133707135

image-20231008133717384

Postman 断言工作原理

image-20231008133752128

Postman 关联

简介

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

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

  1. 发送接口B 请求,获取响应数据。
  2. 将响应数据,放入公共容器(全局变量、环境变量)中 。
  3. 接口A 从公共容器中,提取数据,发送请求。

image-20231008133930805

将数据赋值给一个全局变量或者局部变量

代码:

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

创建环境

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

image-20231008134142254

image-20231008134157759

image-20231008134210150

Postman 参数化

简介

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

数据文件简介

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

image-20231008134455090

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

导入数据文件到postman

image-20231008135016363

202310081350178.png

读取数据文件数据

理论

根据使用位置 不同,有两种方法。

  • 第一种:请求参数(请求行、请求头、请求体)中,使用数据文件中的数据
    • csv文件:; json文件:
  • 第二种:代码(Tests)中,使用数据文件中的数据
    • 使用 postman 内置的 关键字 data,索引字段名或键名

    • csv文件:data.字段名; json文件:data.键名

案例

需求:批量查询 手机号 所属运营商,校验运营商数据正确性

接口: http://cx.shouji.360.cn/phonearea.php?number=13012345678

测试数据: 手机号: 13012345678 运营商: 联通 手机号: 13800001111 运营商: 移动 手机号: 18966778899 运营商: 电 信

image-20231008135232644

image-20231008135254433

Postman 测试报告

安装 node.js

1
2
3
4
# 安装
双击 .msi 文件,一路下一步安装即可。无需特殊设定。
# 测试安装成功
npm -v

安装 newman

1
2
3
4
5
6
# 安装newman
npm install -g newman
# 测试安装成功
newman -v
# 安装newman插件 - 扩展版
npm install -g newman-reporter-htmlextra

导出用例集

image-20231008135449041

导入用例集

image-20231008135520596

导出环境文件

image-20231008135540731

image-20231008135554983

newman生成测试报告

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

后记