Postman的高级使用

Postman高级使用


能够使用Postman 对响应结果自动断言

能够使用Postman 处理关联数据

能够使用Postman 进行接口参数化处理

掌握使用newman生成测试报告的命令

一、Postman 断言

Postman断言:让Postman工具代替人工自动判断预期结果和实际结果是否一致

用法:

  • ‘Tests’ 后置脚本标签页编写JavaScript断言代码
  • 断言结果(PASS/FAIL) 在Test Results标签页中展示

选择断言代码片段:

​ 在Tests输入框的右侧配置了一些常用的断言代码片段,点击后自动填写到Tests输入框中,然后再进行修改

1.1 断言响应状态码

  • 模板名称: Status code: Code is 200
  • 模板内容:
//断言响应状态码为200
pm.test("Status code is 200",function () {
pm.response.to.have.status(200);
});

pm.test()函数:
	参数1:字符串-测试断言名称
	参数2:回调函数-具体断言语句
pm.response.to.have.status(code:Number):判断是否包含指定的状态码

pm: postman的实例。
test() postman实例的测试方法。这个方法 有2个参数。
	参1: "Status code is 200"。 这个参数可以任意修改, 不影响断言。
		作用:在断言结東后,显示给用户,断言结果的提示文字。
	参2:是一个匿名函数调用。

pm.response.to.have.status(200);的意思是:
	postman的响应结果中,应该有响应状态码200。一这里的 200 是预期结果。

image-20221225153937137

1.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期望响应文本中,应该包含“你想搜索的字符串"(预期结果)

image-20221225155326582

1.3 断言 JSON数据

  • 模板名称: Response body: JSON value check
  • 模板内容:(包含指定的key ,否则就不通过)
// 校验响应的JSON数据
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

pm.response.json()  获取响应结果的json数据
.eql() :用于指定断言方式和预期结果

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-20221225155742137


image-20221225161101816

Postman断言工作原理

image-20221225162002063


image-20221226144041834


二、Postman 自动关联

2.1 简介

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

2.2 实现步骤

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

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

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

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

image-20221225163344480

2.3 核心代码

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

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

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

//3.在postman 界面中(URL、 请求头headers、 请求体body) 提取全局、环境变量数据。
{{全局变量名}} / {{环境变量名}}
//Python中使用:
var value = pm.environment.get("var.name");

2.4 创建环境

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

image-20221225165338221


image-20221225165822178


案例

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

从获取天气接口,http://www.weather.com.cn/data/sk/101010100.html
获取返回结果中的城市名称
调用百度搜索接口: http://www.baidu.com/S?wd=北京 ,把获取到的城市名称,如:北京,作为请求参数

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

Test代码:

// 1 获取响应结果 
var jsonData = pm.response.json()

// 2 从响应结果 拿到城市名
var city = jsonData.weatherinfo.city

// 3 存入全局变量
pm.globals.set("glb_city",city)

image-20221225172010023


image-20221225173000452

2、使用 postman 关联技术,实现 添加员工 接口。

登录成功,返回的“令牌"被 添加员工 接口依赖。

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

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

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

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

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

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

image-20221225193901992


image-20221225194225161


image-20221225194617399


image-20221225194706258


image-20221226144114615


三、Postman 参数化

3.1 简介

  • 什么是参数化:

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

    • 1.测试数据保存在数据文件 单独维护
    • 2.引用数据文件实现脚本迭代调用
  • 应用场景:

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

image-20221225195443600

3.2 数据文件介绍

  • CSV:

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

    image-20221226093933319

  • JSON

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

    image-20221226093947506

3.3 编写数据文件

  • CSV文件

image-20221226095010747

检查 csv 文件的正确性:

  1. 点击用例集空白处, 右边出现一个 run 按钮

  2. 点击 run 按钮进入 Runner 页面,点击 Select File 选择文件;Preview 查看导入的是否正确

    image-20221226100801777

  • JSON文件:最外层必须为 [] ,然后使用 {} 存放多组数据。

可用 pycharm 、记事本、https://www.json.cn/ 进行 json数据编写

image-20221226102244339

3.4 读取数据文件数据

理论

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

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

案例

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

  • 接口地址: http://cx.shouji.360.cn/phonearea.php?number=13012345678
  • 部分测试数据:
    • 手机号: 13012345678 运营商:联通
    • 手机号: 13800001111 运营商:移动
    • 手机号: 18966778899 运营商:电信

分析:

​ ①如何定义数据文件?
​ ②如何引用测试数据?
​ ③如何关联数据文件?

备注:在http请求页中使用了数据文件中的关键字,不能再使用send发送请求

方法一 、CSV

image-20221226110053279


image-20221226110501825

方法二、JSON

image-20221226113646334


image-20221226113726281


Postman 控制台调试

有异常或出现失败的时候,可借助控制台进行查看分析。

image-20221226112421666


一定要多去使用,培养使用及解决问题的能力。


image-20221226144139831


四、Postman 测试报告

掌握使用newman生成测试报告的命令

4.1 配置好 生成测试报告环境中

安装 node.js

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

安装 newman

#安装newman
npm install -g newman
#测试安装成功
newman -V

#安装newman插件 -标准版
npm install -g newman-reporter-html

#安装newman插件 -扩展版 (最好使用这个)
npm install -g	newman-reporter-htmlextra

详细 安装步骤 请参考下面链接:

http://t.csdn.cn/ncy6t

4.2 导入和导出 测试用例集

  • 导出:导出之前先新建一个存放 导出诗句的文件夹,最好用英文

image-20221227095756791


导出成功后,右下角会出现 成功提示框

image-20221227100958653

  • 导入

image-20221227101116089


导入成功后,右下角会出现 成功提示框

image-20221227101343651


如果导入的 用例集 已存在,可以选择替换或复制,按需选择即可。

image-20221227101728802


4.3 导出 环境文件

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

image-20221227103958368


image-20221227104150848

4.4 newman 生成测试报告

测试统计分析 + 测试结果确认 Newman生成测试报告

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

-e 和 -d  是非必须的。
如果没有使用  环境,不需要指定  -e
如果没有使用数据文件(做参数化), 不需要指定-d

命令说明:
● run xx.json:执行测试集文件
● -e source:环境变量文件
● -d source:测试数据文件
● -r html:生成测试报告类型
● --reporter-html- export source:存放报告的路径

示例1: 指定 用例集文件 和 数据文件

# 在存放文件的目录 启动 DOS窗口  按照生成报告的相关说明写代码
newman run 第三天作业.postman_collection.json -d login.json -r htmlextra --reporter-htmlextra-export  第三天作业.html

image-20221227132632407

示例2: 指定 用例集文件 和 环境文件

# 在存放文件的目录 启动 DOS窗口  按照生成报告的相关说明写代码
newman run 关联练习1.postman_collection.json -e 测试环境.postman_environment.json -r htmlextra --reporter-htmlextra-export 测试报告.html

image-20221227130856125


image-20221227134127059


image-20221228085532745


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Postman是一款非常强大的API测试工具,除了基本的请求发送和响应查看外,还有很多高级功能可以提高测试效率和准确性。以下是一些Postman高级使用教程: 1. 变量和环境:使用变量和环境可以方便地管理测试数据和配置,避免重复输入和修改。可以在请求中使用{{variable}}的形式引用变量,也可以在环境中定义全局变量和环境变量。在测试集合中可以切换不同的环境,以便在不同的环境中运行测试。 2. 脚本:Postman支持JavaScript脚本,可以在请求前、请求后、测试前、测试后等不同的阶段执行脚本。脚本可以用来生成动态数据、处理响应结果、验证测试结果等。可以在请求或测试的“Tests”选项卡中编写脚本。 3. 数据驱动测试:使用CSV或JSON文件可以实现数据驱动测试,即在同一个请求中多次执行相同的操作,但使用不同的数据。可以在请求的“Pre-request Script”选项卡中读取数据文件,并将数据保存为变量,然后在请求中使用变量。 4. Mock服务:Mock服务可以模拟API的响应,以便在API尚未实现或不可用时进行测试。可以在Postman中创建Mock服务,并设置Mock响应的结构和内容。Mock服务可以在Postman中直接测试,也可以通过URL共享给其他人使用。 5. 自动化测试:Postman支持自动化测试,可以使用第三方工具(如Newman)在命令行中运行Postman测试集合,并生成测试报告。可以将自动化测试集成到CI/CD流程中,以便在每次代码提交后自动运行测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小橙子*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值