接口测试-第03天(Postman断言、关联、参数化)

Postman断言

Postman 断言简介

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

Poatman常用断言

1.断言响应状态码

Status code:Code is 200

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

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

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

image-20240519120433214

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

3.断言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"Your test name"。这个参数可以任意修改,不影响 断言。
		作用:在断言结束后,显示给用户,断言结果的提示文字
    参2:是一个匿名函数 调用

var jsonData = pm .response.json();将整个json 响应体 赋值 到变量jsonData上。

pm.expect(jsonData.value).to.eql(100);postman期望json 结果中 指定key的值为xxx
value的取值:success、code、message
	

image-20240519141121210

var jsonData =pm.response.json()

image-20240519141252227

Postman断言工作原理

image-20240519141854277

Postman关联

简介

当接口和接口之间,有依赖关系时,需要借助postman 关联技术,来实现。

如:登录接口返回的令牌数据,被添加员工接口依赖。

添加员工 返回员工id,被查询员工接口依赖。

实现步骤

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

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

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

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

image-20240519142312868

核心代码

//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-20240519143024624

image-20240519143235125

image-20240519143252965

案例1

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

image-20240519144515445

案例2

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

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

思路:

  1. 发送登录请求(必须登录成功),获取响应结果。
  2. 从json响应结果中,提取data值。拼接上“Bearer”前缀。
    • 注意:Bearer单词不能拼错,首字母必须大写,只有一个空格
  3. 将拼接无误的令牌,存入环境变量,从“眼睛”图标查看。
  4. 添加员工接口,从环境变量中,提取令牌。设置到请求头中,作为Authorization的值。
  5. 填写 添加员工 接口 其他信息(post、URL、请求体),发送请求

image-20240519145625542

image-20240519151147429

image-20240519151231574

员工查询

image-20240519152243345

Postman参数化

简介

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

数据文件简介

  • CSV:

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

    image-20240519152931665

  • JSON:

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

编写数据文件

CSV文件

image-20240519154046646

JSON文件

image-20240519154213723

导入数据文件到Postman

image-20240519154951778

image-20240519155010530

image-20240519155032110

读取数据文件数据

理论

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

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

案例

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

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

测试数据:

手机号:13012345678 运营商:联通

手机号:13712345678 运营商:移动

手机号:18912345678 运营商:电信

image-20240519155827722

image-20240519160537903

image-20240519160640526

image-20240519161545211

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值