【软件测试】接口测试笔记3


前言

  • 使用Postman管理、执行测试用例生成测试报告
    重点:管理测试用例Collections、Postman断言、全局变量和环境变量、Postman关联、使用newman生成测试报告

提示:以下是本篇文章正文内容,下面案例可供参考

一、Postman高级用法

1. 管理测试用例Collections

  • 创建collections
    在这里插入图片描述
  • 修改用例集名称
    在这里插入图片描述
  • 添加请求
    在这里插入图片描述
  • 添加一个http请求
    在这里插入图片描述
  • 创建用例集、子目录和请求
    在这里插入图片描述

2. 测试用例集导入、导出

  • 导出用例集
    在这里插入图片描述
    在这里插入图片描述

  • 导入用例集
    在这里插入图片描述

3. Postman断言

  • 断言:让程序判断预期结果和实际结果是否一致

  • 特点

    • Postman的断言使用JavaScript语言编写,写在“Tests”标签页
    • Tests中的脚本在发送请求后执行,会把断言的结果(PASS/FAIL)最终在’Test Results’标签页中展示
      在这里插入图片描述
  • Postman常用断言

    1. 断言响应状态码
      • 在Test标签中,选中Status code: Code is 200,生成对应代码
      • 适当调整test()方法参数1,和匿名函数中的预期结果。
      • 点击send按钮,发送请求,执行断言代码。
      • 查看断言结果。
//断言响应状态码是否为200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200); //这里的200是预期结果
});
pm:代表postman一个实例
test():是pm实例的一个方法,有两个参数
	参数1:在断言结束后,给出的文字提示。可以修改。"Status code is 200"
	参数2:匿名函数。
pm.response.to.have.status(200); //postman的响应结果中应该包含状态码200

在这里插入图片描述
在这里插入图片描述

  1. 断言响应体是否包含某个字符串
    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():是pm实例的一个方法,有两个参数
	参数1:在断言结束后,给出的文字提示。可以修改。
	参数2:匿名函数。
pm.expect(pm.response.text()).to.include("string_you_want_to_search"); //postman期望响应文本中包含xxxxx字符串,"string_you_want_to_search"为预期结果,可修改

在这里插入图片描述

  1. 断言响应体是否等于某个字符串(对象)
    Response body:Is equal to a string
//判断响应体数据是否等于指定的字符串
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
pm:代表postman一个实例
test():是pm实例的一个方法,有两个参数
	参数1:在断言结束后,给出的文字提示。可以修改。
	参数2:匿名函数。
pm.expect(pm.response.text()).to.include("string_you_want_to_search"); //postman的响应中应该有响应体xxx,"response_body_string"为预期结果,可修改
  1. 断言JSON数据
    Response body:JSON value check
//断言JSON的响应结果
pm.test("Your test name", function () {
    var jsonData = pm.response.json();  //var jsonData用js语法定义一个变量。jsonData就是变量名。pm.response.json()代表响应的json结果
    pm.expect(jsonData.value).to.eql(100); //pm预期json结果的中key的值等于xxx.其中100代表预期结果,可以修改
});
//举例:response.json();
/*
{
	"success":true,
	"code":10000,
	"message":"操作成功",
	"data":"95c78d75-721c-40fb-b2d5-742fea42cbd5"
}
jsonData.value的值取:success、code、message、data
*/

在这里插入图片描述

  1. 断言响应头
    Response headers:Content-Type header check
//断言响应头
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");//响应头中包含Content-Type
});
//可以断言响应头对应的value:pm.response.to.have.header("Content-Type", "application/json;charset=UTF-8");
  • Postman断言工作原理
    在这里插入图片描述

4. 全局变量和环境变量

  • 全局变量定义

    • 全局变量是全局唯一的,不可重复定义的变量
  • 环境变量定义

    • 一个变量只能属于某个环境(生产环境、开发环境、测试环境),在某一个环境中变量不可重复定义
    • 在环境与环境之间可以定义重复的变量
    • 一个环境可以包含多个环境变量
    • 常见环境分类:开发环境、测试环境、生产环境
  • 设置变量

    • 全局变量

      • 手动设置
      • 代码设置:pm.globals.set(“var_name”, value);
      • 在这里插入图片描述
    • 环境变量

      • 手动设置
      • 代码设置:pm.environment.set(“var_name”, value);
      • 在这里插入图片描述
  • 获取变量值

    • 全局变量

      1. 请求参数中获取(postman界面):{{var_name}}
      2. 代码中获取:var value=pm.globals.get(“var_name”);
        在这里插入图片描述
    • 环境变量

      1. 请求参数中获取:{{var_name}}
      2. 代码中获取:var value=pm.environment.get(“var_name”);
        在这里插入图片描述

5. Postman请求前置脚本

  • 在send按钮点击后,请求前置脚本代码,第一时间被执行。在postman内部实际http请求之前。

假设,这样一种场景:
调某接D时,要输入“时间戳”,如果输入的“时间戳"的绝对值,超过标准时间10分钟。则不允许调用。

  • 时间戳
    • 对应绝对时间,如从1970年1月1日00:00:00到现在所经历的秒数。

一天:86400秒
51年6月(180)9天–1,624,665,600秒

  • 案例

调用百度首页接口,传时间戳给服务器

实现步骤:

  1. 在Pre-request Script标签页中,添加代码。拿到时间戳。写入全局变量
//获取时间戳数据值
var timestamp = new Date().getTime();

//将时间戳设置到全局变量
pm.globals.set("glb_timestamp", timestamp);
  1. 点击Send按钮,发送请求。请求发送前执行上述代码。写入全局变量
  2. 查看写入的变量
    在这里插入图片描述
  3. 在请求参数中(界面)使用全局变量({{glb_timestamp}})
    在这里插入图片描述
  4. 在Postman控制台中查看发送http请求
    view–>show Postman Console
    在这里插入图片描述
  • 工作原理
    在这里插入图片描述

6. Postman关联

介绍:应用于多个http请求之间,有数据关联或依赖关系时

实现步骤
A接口 依赖 B接口的数据

  1. 向B接口发送http请求,获取数据
  2. 将数据设置至全局变量(环境变量)中
  3. A接口获取全局变量(环境变量)中数据值,进行使用

案例

请求 获取天气接口,提取响应结果中的城市,将城市名给百度搜索接口使用

实现步骤:

  1. 创建用例集,分别创建 查询天气 请求 和 百度搜索的请求
    在这里插入图片描述

  2. 在查询天气请求Test中,编写代码获取城市名,写入全局变量

//获取全部响应结果
var jsonData = pm.response.json()
//从响应结果中获取城市名
var city = jsonData.weatherinfo.city

//将城市名写入到全局变量
pm.globals.set("glb_city", city)
  1. 点击Send按钮,发送请求,查看设置的全局变量
    在这里插入图片描述
  2. 修改百度搜索请求,使用全局变量,按城市名搜索
    http://www.baidu.com/s?wd={{glb_city}}
    在这里插入图片描述

7. 批量执行测试用例

在这里插入图片描述
在这里插入图片描述

二、Postman测试报告

1. 安装newman

2. 使用newman生成测试报告

  • 批量执行测试用例集
  • 导出测试集数据(得到xxx.json文件)
    在这里插入图片描述
    在这里插入图片描述
  • 在 终端 中执行测试,生成测试报告
    使用newman命令,运行导出的测试集脚本,打开cmd输入:
    newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export 测试报告名.html
    eg:
    newman run demo.postman_collection.json -r html
    newman run demo.postman_collection.json -r html --reporter-html-export report.html
    命令说明
    • run xxx.json:表示要执行的postman脚本,即导出的测试集数据
    • -e source:用来指定环境变量文件的路径
    • -d source:用来指定测试数据文件的路径

注: 如果添加 -r html 就报错 说明newman-reporter-html 安装失败


网课来源

【黑马测试】测试基础604-631。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值