接口测试-Postman的使用
相关工具的安装
- 安装 newman :
npm install -g newman
- 安装 newman-reporter-htmlextra :
npm install -g newman-reporter-htmlextra
Postman的介绍
Postman的介绍
- Postman 一款支持调试和测试的工具,开发、测试工程师都可以使用
- 特点:支持MAC、Windows和Linux
- 官网地址:https://www.getpostman.com/
Postman示例
需求:使用 Postman 访问百度 http://www.baidu.com,并查看响应结果
实现步骤:
设置请求方式
输入接口地址
点击发送请求
查看响应结果
发送 get 请求
发送get请求
案例
- 需求:
- 访问TPshop搜索商品的接口,搜索关键字iPhone,并查看响应数据
- 分析:
- • 请求方式:GET
- • 请求路径:http://tpshop-test.itheima.net/Home/Goods/search.html
- • 传参方式:查询字符串(q=iPhone)
发送 Post 请求
发送 Post 请求
案例一
- 需求:发送TPshop的登录接口请求
- 分析:
- • 请求方式:POST
- • 请求路径:http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login
- • 请求数据:请求体-表单数据
- username: 13012345678
- password: 123456
- verify_code: 1234
案例二
- 需求:发送IHRM项目的登录接口请求并查看响应结果
- 分析:
- • 请求方式:POST
- • 请求URL:http://ihrm-test.itheima.net/api/sys/login
- • 请求数据:
- • 请求头:
Content-Type: application/json
- • 请求体:
{"mobile":"13800000002", "password":"123456"}
- • 请求头:
思考
- Postman中get请求查询参数如何设置?
- Postman中如何发送表单数据格式的post请求?
- Postman中如何发送JSON数据格式的post请求?
发送其他请求
发送其他请求
- 思考:如何发送put请求和delete请求?
- 答:修改请求方法,其他设置均与get/post请求类似
案例
- 案例:
- 发送ihrm修改员工接口请求并查看响应结果
- 发送ihrm删除员工接口请求并查看响应结果
Postman断言
学习目标
- 能够使用Postman对响应结果自动断言
断言介绍
Postman断言:让Postman工具代替人工自动判断预期结果和实际结果是否一致
用法:
- ‘Tests’后置脚本标签页编写JavaScript断言代码
- 断言结果(PASS/FAIL)在‘Test Results’标签页中展示
在 Tests 输入框的右侧配置了一些常用的断言代码片段,点击后自动填写到 Tests 输入框中,然后再进行修改
响应状态码断言
模板名称:Status code: Code is 200
模板内容:
参数一 : 这个参数可以任意修改,不影响断言
- 作用:在断言结束后,显示给用户,断言结果的提示文字
参数二 : 一个匿名函数的调用
1 | // 响应状态码 |
包含指定字符串断言
- 模板名称:Response body: Contains string
- 模板内容:
- 参数一 : 这个参数可以任意修改,不影响断言
- 作用:在断言结束后,显示给用户,断言结果的提示文字
- 参数二 : 一个匿名函数的调用
1 | // 指定字符串 |
JSON数据断言
- 模板名称:Response body: JSON value check
- 模板内容:
1 | // 响应的数据 json 格式 |
案例
- 针对 帝莎商城后台管理系统 的登录成功接口用例完成断言设置
- 响应状态码断言
- JSON数据断言
1 | // 响应体 |
1 | // 断言响应状态码 |
断言的工作原理
思考
- 断言的作用是什么?
- 常见断言有哪些方式
- ★ 响应状态码断言
- ★ 包含字符串断言
- ★ JSON数据断言
Postman自动关联
学习目标
- 能够使用Postman进行自动关联数据处理
应用场景
- 当接口和接口之间,有依赖关系时,需要借助postman关联技术,来实现。
- 如:
- 登录接口返回的令牌数据,被添加员工接口依赖。
- 添加员工接口返回员工id,被查询员工接口依赖。
自动关联解决思路
- 假定:接口B产生的数据,被接口A依赖。
- 1.发送接口B请求,获取响应数据。
- 2.将响应数据,放入公共容器器(全局变量、环境变量)中
- 3.接口A从公共容器中,提取数据,发送请求。
1 | // 1. 获取 响应数据,转为 json格式,保存到变量 jsonData中。 |
案例一_全局变量
需求 :
- 使用 postman 关联,实现下面案例
- 从获取天气接口,get请求 ,无参数 : http://www.weather.com.cn/data/sk/101010100.html
- 获取返回结果中的城市名称
- 调用百度搜索接口: http://www.baidu.com/S?wd=北京 ,把获取到的城市名称,如:北京,作为请求参数
思路:
- 发送 获取天气请求,获取响应结果
- 从响应结果中,拿到城市名,存入 全局变量
- 百度搜索接口从全局变量中,取城市名,发送搜索请求。
创建环境 :
- 发起请求设置全局变量 :
1 | // 1. 获取响应结果 |
- 读取全局属性发起请求
案例二_环境变量
使用 postman 关联技术,实现 添加员工 接口。
登录成功,返回的 “令牌” 被 添加员工 接口依赖。
思路:
- 发送登录请求(必须登录成功),获取响应结果
- 从 json 响应结果中,提取 data 值。拼接上 “Bearer ” 前缀。
注意:Bearer单词不能拼错,首字母必须大写,只有一个空格
3. 将拼接无误的 令牌,存入 环境变量。 从 “眼睛” 图标查看。
4. 添加员工 接口,从 环境变量 中,提取 令牌。设置到请求头中,作为 Authorization 的 值。
5. 填写 添加管理员 接口 其他信息(post、URL、请求体),发送请求。登录请求获取 token , 写入环境变量 :
1 | //1.获取响应结果 |
- 读取环境变量,发起请求
思考
Postman参数化
学习目标
- 能够使用Postman进行接口参数化处理
参数化简介
- 什么是参数化:将测试数据,组织到数据文件中,通过脚本的反复迭代,使用不同的数据,达到测试不同用例的目标。
- 应用场景:一般在测试同一个接口的不同测试点时,只有测试数据不同。考虑使用参数化。
数据文件
数据文件简介
- CSV:
- 优点:数据组织格式简单
- 缺点:
- 不能测试 bool 类型。因为 postman 读取 csv后,将所有非数值类型数据,自动添加 ”“ 变为字符串
- 不能存储复杂数据类型(元组、列表、字典)。
- 不能实现 参数测试。
- 应用场景:数据量较大,数据组织格式简单。
1 | // xxxx.csv |
- JSON:
- 优点:
- 可以测试 bool 类型
- 能使用 复杂数据类型
- 可以实现 参数测试。
- 缺点:相同数据量,json文件要远大于 csv 文件。
- 应用场景:数据量较少,数据组织格式复杂。需要进行参数测试!
- 优点:
1 | // xxxx.json |
读取数据文件
读取数据
- 根据 使用位置 不同,有两种方法。
- 第一种:请求参数(请求行、请求头、请求体)中,使用 数据文件中 的数据
- csv文件:;
- json文件:
- 第二种:代码(Tests)中,使用 数据文件中 的数据
- 使用 postman 内置的 关键字 data,索引 字段名 或 键名
- csv文件:data.字段名;
- json文件:data.键名
- 第一种:请求参数(请求行、请求头、请求体)中,使用 数据文件中 的数据
CSV案例_查询手机运营商
需求:批量查询 手机号 所属运营商,校验运营商数据正确性
接口: http://cx.shouji.360.cn/phonearea.php?number=13012345678
测试数据:
- 手机号: 13012345678 运营商: 联通
- 手机号: 13800001111 运营商: 移动
- 手机号: 18966778899 运营商: 电信
编写断言与数据文件
1 | // xxxx.csv |
- 读取数据获得结果
JSON案例_查询手机运营商
1 | [ |
思考
- 参数化解决的问题是什么?
- 如何引用数据文件批量执行测试用例?
Postman测试报告
学习目标
- 掌握使用Newman生成测试报告
测试报告
- 测试统计分析 + 测试结果确认
- Newman生成测试报告
Newman
Newman安装
- Newman:基于nodejs,在命令行执行Postman脚本的插件
- 安装nodejs
- 校验:
node -v
- 校验:
- 安装newman插件
- 安装n ewman
npm install -g newman
- 校验
newman -v
- 安装 newman-reporter-htmlextra
npm install -g newman-reporter-htmlextra
生成测试报告命令
命令 :
newman run 测试集文件 -e 环境变量文件 -d 测试数据文件 -r htmlextra --reporter-htmlexport-export report.html
newman run 测试集文件.json -e 环境变量文件.json -d 测试数据文件.json -r htmlextra --reporter-htmlexport-export 测试报告.html
命令说明:
- run xxx.json:执行测试集文件
- -e source:环境变量文件 , 非必须参数
- -d source:测试数据文件, 非必须参数
- -r htmlextra:生成测试报告类型
- –reporter-htmlexport-export source:存放报告的路径
用例集的导入导出
用例集导出
用例集导入
环境文件的导出
案例
针对ihrm系统的登录接口进行参数化,并批量运行产出测试报告
分析测试报告:
总共运行了多少条测试用例?
成功了多少条case?失败了多少条case?
查看每一天case的请求数据是否正确引用了数据文件
查看断言响应是否正确
分析失败的case是什么原因造成的?
思考
- 请描述生成测试报告的步骤?
newman run 用例集名称.json -e 环境文件名称.json -d 数据文件名称.json -r html --reporter-htmlexport-report.html
- 分析测试报告:查看用例的具体数据,分析失败原因
帝莎商城接口实战
登录接口
登录成功
1 | // 响应状态码 |
用户不存在
1 | // 响应状态码 |
密码错误
1 | // 响应状态码 |
用例的批量执行
- 感谢你赐予我前进的力量