postman高级用法

背景

在项目开发的过程中,少不了对接口的调用和对自己编写的接口进行自测,或者测试同学用来做接口测试用

问题

java 复制代码
请求头:

key:authenticationToken

value:获取token接口获取的token

/external-data/guoyin-iot-platform-external-data-center/manual/underlyingGetVehicleList

{"appId":"1d7541223b3e4b2da4dadc7349cd0c9e","pageNum":"6","pageSize":"1000","timestamp":"1702380524131","frameNo":null}

针对以上的接口类型,使用postman进行测试的时候,时间戳的生成,以及token值的获取,因为每个接口都需要该参数。在postman中如何做参数化呢?

知识点

1.时间戳生成在postman中使用,另类参数发

2.提取token的属性值,作为全局使用。

postman关联

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

  1、postman 自关联

  2、实现步骤

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

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

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

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

  3、核心代码

python 复制代码
// 1. 获取 响应数据,转为 json 格式,保存到变量 jsonData 中。 
var jsonData = pm.response.json() 

// 2.1 使用 全局变量做容器。 
pm.globals.set("全局变量名", 全局变量值) 

// 2.2 使用 环境变量做容器。 
pm.environment.set("环境变量名", 环境变量值) 

// 3. 在 postman 界面中(URL、请求头headers、请求体body)提取全局、环境变量数据。 
{{全局变量名}}/{{环境变量名}}

三、创建环境

  全局变量:在整个 postman 中都可以使用的变量,不需要单独创建环境

  环境变量:在特定环境下,才能使用的变量,需要给此变量创建单独的环境

  1、环境的创建

实例

    1、使用 postman 关联,实现下面案例

    2、从获取天气接口,http://www.weather.com.cn/data/sk/101010100.html

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

    4、调用百度搜索接口: 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)

扩展

使用 postman 关联技术,实现添加员工接口。登录成功,返回的 "令牌" 被 添加员工接口依赖。

  思路:

    1. 发送登录请求(必须登录成功),获取响应结果

    2. 从 json 响应结果中,提取 data 值。拼接上 "Bearer " 前缀。

      注意:Bearer单词不能拼错,首字母必须大写,只有一个空格

    3. 将拼接无误的 令牌,存入 环境变量。 从 "眼睛" 图标查看。

    4. 添加员工 接口,从 环境变量 中,提取 令牌。设置到请求头中,作为 Authorization 的 值。

    5. 填写 添加员工 接口 其他信息(post、URL、请求体),发送请求。

复制代码
//获取相应结果
var jsonData = pm.response.json()
//提取data值,拼接“Bearer空格”前缀,行成完整令牌
var token = "Bearer "+jsonData
//将完整令牌存入环境变量
pm.environment.set("env_token",token)

四、参数化

  简介:将测试数据,组织到数据文件中,通过脚本的反复迭代,使用不同的数据,达到测试不同用例的目标。

  使用场景:一般在测试同一个接口的不同测试点时,只有测试数据不同。考虑使用参数化。

  数据文件简介:   

    1、CSV:记住:逗号必须为英文的逗号

      优点:数据组织格式简单

      缺点:

        1. 不能测试 bool 类型。因为 postman 读取 csv后,将所有非数值类型数据,自动添加 "" 变为字符串

        2. 不能存储复杂数据类型(元组、列表、字典)。

        3. 不能实现 参数测试。

        应用场景:数据量较大,数据组织格式简单。

  2、JSON:

    优点:

      1. 可以测试 bool类型

      2. 能使用 复杂数据类型

      3. 可以实现 参数测试。

    缺点:

      1、相同数据量,json文件要远大于 csv 文件。

    应用场景:数据量较少,数据组织格式复杂。需要进行 参数测试!

  3、将 csv 文件导入 postman(首先在界面上新建好 txt 文件)

  4、读取数据文件数据

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

    第一种:请求参数(请求行、请求头、请求体)中,使用 数据文件中 的数据

      csv文件:{{字段名}}; json文件:{{键名}}

    第二种:代码(Tests)中,使用 数据文件中 的数据

      使用 postman 内置的 关键字 data,索引 字段名 或 键名

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

    案例:

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

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

      测试数据:

        手机号: 13012345678 运营商: 联通

        手机号: 13800001111 运营商: 移动

        手机号: 18966778899 运营商: 电信

如果出错可再次查看调试

五、测试报告

  安装环境

  1、安装 node.js

    # 安装

      双击 .msi 文件,一路下一步安装即可。无需特殊设定。

    # 测试安装成功

      npm -v

  

  2、安装newman

    # 安装newman

      npm install -g newman

    # 测试安装成功

      newman -v

    # 安装newman插件 - 扩展版

      npm install -g newman-reporter-htmlextra

  3、导出用例集

    导出:

    导出环境文件

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

    

    导入

六、Newman 生成测试报告

python 复制代码
# 完整命令 
  newman run 用例集文件.json -e 环境文件.json -d 数据文件.json/.csv -r htmlextra --reporter- htmlextra-export 测试报告名.html 

-e 和 -d 是 非必须的。 
如果没有使用 环境,不需要指定 -e 
如果没有使用 数据文件(做参数化),不需要指定 -d
相关推荐
Meta Luo16 小时前
页面改版后自动化用例大量失败,应该怎么维护?
运维·功能测试·测试工具·自动化
释槐鸟~1 天前
还不知道RIDE工具怎么装吗
测试工具·自动化
有技巧搬砖2 天前
为什么锂电池组的电池老化测试很重要?
测试工具·锂电池·电池老化
一条泥憨鱼2 天前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
蒲公英内测分发2 天前
智能手表卖出去后,包装、说明书和官网里的 App 下载入口怎么统一?
前端·人工智能·测试工具·智能家居·智能硬件·智能手表
蒲公英内测分发2 天前
智能手环出海测试,海外合作方分散在不同国家,Android 测试包怎么持续分发和更新?
android·前端·人工智能·测试工具·智能手表
无语的小歪歪2 天前
ATF 智测 1.0
python·测试工具·集成测试
SHENGWEI胜为3 天前
交换机端口显示正常,终端却获取不到 IP 地址?从 DHCP 流程定位故障
服务器·网络·测试工具·缓存·通信工程
一条泥憨鱼3 天前
【Redis | 黑马点评】分布式锁;Lua脚本;Redisson与看门狗 |源码万字详解
redis·分布式·lua