postman高级使用(断言、参数化、关联、测试报告)

一、断言

  1、postman断言:让postman工具代替人工自动判断预期结果和实际结果是否一致(在postman的tests里面写

  常用断言:

    1、判断响应状态码

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

pm:postman的实例。 
test() postman实例的测试方法。 这个方法 有 2 个参数。 
参1:"Status code is 200"。 这个参数可以任意修改,不影响 断言。 作用:在断言结束后,显示给用户,断言结果的提示文字。
 
参2:是一个 匿名函数 调用。 
pm.response.to.have.status(200); 的意思是: postman的响应结果中,应该有响应状态码200。 ———— 这里的200是预期结果。

    

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

    

    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:"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,被询员工接口依赖。

  1、postman 自关联

 

 

 

  2、实现步骤

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

      1. 发送接口 B 请求,获取响应数据。
      2. 将响应数据,放入公共容器(全局变量、环境变量)中
      3. 接口 A 从 公共容器中,提取数据,发送请求。
  3、核心代码
// 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、环境的创建

  

  2、练习

    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)

 

  3、练习

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

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

# 完整命令 
  newman run 用例集文件.json -e 环境文件.json -d 数据文件.json/.csv -r htmlextra --reporter- htmlextra-export 测试报告名.html
-e 和 -d 是 非必须的。 如果没有使用 环境,不需要指定 -e 如果没有使用 数据文件(做参数化),不需要指定 -d

 

posted @ 2023-04-09 21:34  新入世界的小白  阅读(1324)  评论(0编辑  收藏  举报