测试技能提升-接口测试3-postman断言、关联、参数化

postman常用断言

断言状态响应码

status code: Code is 200

//断言状态响应码为200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm:postman的实例
test() postman实例的测试方法。这个方法有两个参数
参数1:Status code is 200 这个参数可以随便修改,不影响断言
参数2:是一个匿名函数调用

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

在这里插入图片描述

断言包含某字符串

response body :contatins string

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

pm:postman的实例
test() postman实例的测试方法。这个方法有两个参数
参数1:“Body matches string” 这个参数可以随便修改,不影响断言
作用:在断言结束后,显示给用户,断言结果提示的是文字
参数2:是一个匿名函数调用

pm.expect(pm.response.text()).to.include(“string_you_want_to_search”); 的意思是:
postman 期望 响应文本中,应该包含 “你想搜索的字符串”(预期结果)
在这里插入图片描述

断言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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

postman断言工作原理

在这里插入图片描述

postman关联

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

实现步骤
假定:接口B 产生的数据,被 接口A 依赖
1、发送接口B请求,获取响应数据
2、将响应数据,放到公共容器(全局变量、环境变量)中
3、接口A从容器中,提取数据、发送请求
在这里插入图片描述
代码

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

创建环境

全局变量:在 整个postman中都可以使用的变量。不需要 单独创建环境。
环境变量:在 特定的环境下,才能使用的变量。需要给此变量创建单独的环境。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述1. 使用 postman 关联,实现下面案例
从获取天气接口,http://www.weather.com.cn/data/sk/101010100.html
获取返回结果中的城市名称
调用百度搜索接口: http://www.baidu.com/S?wd=北京 ,把获取到的城市名称,如:北京,作为请求参数

思路:

  1. 发送 获取天气请求,获取响应结果
  2. 从响应结果中,拿到城市名,存入 全局变量
  3. 百度搜索接口从 全局变量中,取城市名,发送搜索请求。
//1、获取响应结果
var jsonData = pm.reponse.json()
//2、 在响应结果中,提取城市名
 var city = jsonData.weatherinfo.city
//3、 将城市保存到全局变量中
pm.globals.set("glb_city",city)

在这里插入图片描述
在这里插入图片描述
案例2
使用 postman 关联技术,实现 添加员工 接口。
登录成功,返回的 “令牌” 被 添加员工 接口依赖。
思路:

  1. 发送登录请求(必须登录成功),获取响应结果
  2. 从 json 响应结果中,提取 data 值。拼接上 “Bearer ” 前缀。
  3. 将拼接无误的 令牌,存入 环境变量。 从 “眼睛” 图标查看。
  4. 添加员工 接口,从 环境变量 中,提取 令牌。设置到请求头中,作为 Authorization 的 值。
  5. 填写 添加员工 接口 其他信息(post、URL、请求体),发送请求。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

postman参数化

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

数据文件简介
CSV:
优点:数据组织格式简单
缺点:

  1. 不能测试 bool 类型。因为 postman 读取 csv后,将所有非数值类型数据,自动添加 ”“ 变为字符串
  2. 不能存储复杂数据类型(元组、列表、字典)。
  3. 不能实现 参数测试。
    应用场景:数据量较大,数据组织格式简单
    在这里插入图片描述
    JSON:
    优点:
  4. 可以测试 bool类型
  5. 能使用 复杂数据类型
  6. 可以实现 参数测试。
    缺点:相同数据量,json文件要远大于 csv 文件。
    应用场景:数据量较少,数据组织格式复杂。需要进行 参数测试!
    在这里插入图片描述

编写数据文件

CSV文件
在这里插入图片描述
json文件
在这里插入图片描述
导入数据文件到postman中
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

读取数据文件数据

理论
根据会用位置不同,有两种方法
第一种:请求参数(请求行、请求头、请求体)中,使用 数据文件中 的数据
csv文件:{{字段名}}; json文件:{{键名}}

第二种:代码(Tests)中,使用 数据文件中 的数据
使用 postman 内置的 关键字 data,索引 字段名 或 键名
csv文件:data.字段名; json文件:data.键名

案例

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

在这里插入图片描述
在http请求页中使用了数据文件中国的关键字,不能在使用send发送请求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值