软件测试 —— Postman(断言)

embedded/2025/1/23 21:49:04/

软件测试 —— Postman(断言)

  • 断言
      • 示例断言
        • 检查状态码
        • 验证响应体中的特定字段
        • 检查响应时间
        • 验证响应头
        • 检查响应体中的字符串
        • 验证JSON数组长度
      • 使用环境变量
      • 运行集合并查看结果
  • 检查状态码
  • 检查响应体中的字符串
  • 检查响应体字符串是否相等
  • 验证响应头字段
  • 检查JSON返回值
      • 示例情景
      • Postman 测试脚本
      • 解释
      • 扩展:添加更多测试
  • 断言工作原理

我们之前将postman中界面上的主要按钮介绍了一部分,如果还不知道的小伙伴可以点击这里:

https://blog.csdn.net/qq_67693066/article/details/145242508
https://blog.csdn.net/qq_67693066/article/details/145240384

我们今天来学习postman中的断言机制:

断言

我们现在postman中找到“Scripts”:
在这里插入图片描述
我们书写断言就在这里书写,这里注意一下,我们书写断言是用的是JavaScript语言。

在Postman中,断言(Assertions)是用于验证API响应是否符合预期的自动化测试工具。通过编写断言,你可以确保API返回的数据、状态码、响应时间等都满足特定条件。这不仅有助于提高API的质量和可靠性,还可以简化开发和维护过程中的调试工作。以下是关于如何在Postman中使用断言的详细介绍:

示例断言

以下是一些常见的断言示例,展示了如何验证不同的响应属性:

检查状态码
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});
验证响应体中的特定字段
pm.test("Response body has a 'name' property", function () {var jsonData = pm.response.json();pm.expect(jsonData).to.have.property('name');
});
检查响应时间
pm.test("Response time is less than 200ms", function () {pm.expect(pm.response.responseTime).to.be.below(200);
});
验证响应头
pm.test("Content-Type is application/json", function () {pm.response.to.have.header('Content-Type', 'application/json; charset=utf-8');
});
检查响应体中的字符串
pm.test("Body contains expected string", function () {pm.expect(pm.response.text()).to.include("expected string");
});
验证JSON数组长度
pm.test("Array length matches expected count", function () {var jsonData = pm.response.json();pm.expect(jsonData.items.length).to.equal(10); // 假设期望有10个元素
});

使用环境变量

你可以结合环境变量来动态设置断言条件,例如根据不同环境检查不同状态码:

var expectedStatusCode = pm.environment.get("expected_status_code") || 200;pm.test("Status code matches environment variable", function () {pm.response.to.have.status(expectedStatusCode);
});

运行集合并查看结果

一旦你为单个请求添加了断言,可以通过运行集合(Collections)来批量执行这些测试。Postman会自动执行每个请求,并根据你编写的断言显示测试结果(通过/失败)。你可以在Runner界面中查看详细的测试报告。

我们来介绍几个比较重要的:

检查状态码

我们在postman的右侧可以找到对应语句的代码:
在这里插入图片描述找到Status code:Code is 200:
在这里插入图片描述然后我们可以点击发送:
在这里插入图片描述我们可以把我们断言的数字换一换:
在这里插入图片描述

检查响应体中的字符串

在这里插入图片描述

检查响应体字符串是否相等

在这里插入图片描述

验证响应头字段

在这里插入图片描述这里注意一下,这个是可以验证响应头中的任何字段:
在这里插入图片描述
比如我们可以验证Connection字段:
在这里插入图片描述

检查JSON返回值

在这里插入图片描述
因为我这里返回的不是JSON数据,所以给大家举个其他例子:
当然,我可以为你提供一个具体的例子来说明如何使用 pm.testpm.expect 来验证 JSON 响应中的某个值是否等于预期值。假设我们有一个 API 端点 /api/product/1,它返回的产品信息中包含一个名为 price 的字段,我们希望验证这个字段的值是否为 100

示例情景

API 请求:GET https://api.example.com/api/product/1

响应示例:

{"id": 1,"name": "Example Product","description": "This is an example product.","price": 100,"stock": 50
}

Postman 测试脚本

我们将编写一个测试用例,以确保 price 字段的值为 100。以下是完整的测试代码:

pm.test("Product price is 100", function () {var jsonData = pm.response.json();pm.expect(jsonData.price).to.eql(100);
});

解释

  • pm.test("Product price is 100", function () { ... });

    • 创建一个新的测试用例,名称为 "Product price is 100"
    • 当测试通过时,Postman 将显示此名称;如果失败,则会给出相应的错误信息。
  • var jsonData = pm.response.json();

    • 将响应体解析为 JSON 对象,并存储在变量 jsonData 中。
  • pm.expect(jsonData.price).to.eql(100);

    • 使用 Chai 断言库提供的 expect 方法来进行断言。
    • 检查 jsonData.price 是否严格等于(包括类型和值)100
    • 如果 price 不是 100,则测试将失败,并且 Postman 会报告具体的原因。

扩展:添加更多测试

你可以根据需要添加更多的测试用例,例如检查其他字段的存在性和值。下面是一些额外的例子:

// 检查产品名称
pm.test("Product name is 'Example Product'", function () {var jsonData = pm.response.json();pm.expect(jsonData.name).to.equal("Example Product");
});// 检查库存数量大于零
pm.test("Product stock is greater than zero", function () {var jsonData = pm.response.json();pm.expect(jsonData.stock).to.be.above(0);
});// 检查 ID 存在并且是数字类型
pm.test("Product has a numeric ID", function () {var jsonData = pm.response.json();pm.expect(jsonData.id).to.be.a('number');
});

断言工作原理

在这里插入图片描述


http://www.ppmy.cn/embedded/156405.html

相关文章

Linux容器(初学了解)

目录 一、容器 1.1、容器技术 1.2、容器和虚拟机之间的差异 1.3、Rootless 和 Rootful 容器 1.4、设计基于容器的架构 1.5、容器管理工具 1.6、容器镜像和注册表 1.7、配置容器注册表 1.8、使用容器文件构建容器镜像 二、部署容器 2.1、Podman 实用程序 2.2、安装容…

Windows FileZila Server共享电脑文件夹 映射21端口外网连接

我有这样一个使用场景,在外部网络环境下,通过手机便捷地读取存储在电脑上的视频文件。比如在外出旅行、出差,身边没有携带电脑,仅依靠手机设备,就能随时获取电脑里存储的各类视频,无论是学习资料视频、工作…

9. 神经网络(一.神经元模型)

首先,先看一个简化的生物神经元结构: 生物神经元有多种类型,内部也有复杂的结构,但是可以把单个神经元简化为3部分组成: 树突:一个神经元往往有多个树突,用于接收传入的信息。轴突:…

用着很顺手的电脑亮度随心随意调节

一、功能介绍 显示高级设置,可以调节屏幕RGB色彩。 娱乐亮度,一键娱乐亮度调节。 护眼亮度,保护眼睛,减少蓝光。 恢复正常,一键恢复到默认模块。 二、问题解答 1、亮度更改后显示器无变化!软件根本都没…

【Excel】【VBA】Reaction超限点筛选与散点图可视化

【Excel】【VBA】Reaction超限点筛选与散点图可视化 功能概述 这段代码实现了以下功能: 从SAFE输出的结果worksheet通过datalink获取更新数据从指定工作表中读取数据检测超过阈值的数据点生成结果表格并添加格式化创建可视化散点图显示执行时间 流程图 #mermaid-…

可替代CentOS 7的Linux操作系统选型

可替代CentOS 7的其他Linux操作系统选型 一、背景介绍二、主流操作系统调研2.1 企业级产品:Red Hat Enterprise Linux/CentOS Stream2.1.1 Red Hat Enterprise Linux2.1.2 CentOS Stream2.2 其他发行版:Debian/Ubuntu2.3 开源产品:AlmaLinux / RockyLinux2.3.1 AlmaLinux2.3…

微信小程序1.1 微信小程序介绍

1.1 微信小程序介绍 内容提要 什么是微信小程序 微信小程序的功能 微信小程序使用场景 微信小程序能取代App吗 微信小程序的发展历程 微信小程序带来的机会

基于微信小程序的科创微应用平台设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…