软件测试 —— Postman(断言)

news2025/1/24 15:46:20

软件测试 —— 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.coloradmin.cn/o/2281497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高并发处理 --- 超卖问题+一人一单解决方案

在高并发场景下,超卖和一人一单是两个典型的并发问题。为了解决这两个问题,我们可以使用乐观锁(CAS)和悲观锁,这两者分别有不同的实现方式和适用场景。下面我们详细介绍如何通过 乐观锁(CAS) 和…

汇编实验·分支程序设计

一、实验目的: 1.能够熟练的进行分支程序的编写,掌握条件语句对应的汇编语言指令的实现 2.掌握多个条件的分支语句的实现原理,理解C语言中的逻辑运算“短路”特征 二、实验内容 1.对2和3任务中的C代码在VS2022中运行,设置生成对应的汇编代码,观察生成代码的不同,着重…

智能风控 数据分析 groupby、apply、reset_index组合拳

目录 groupby——分组 本例 apply——对每个分组应用一个函数 等价用法 reset_index——重置索引 使用前​编辑 注意事项 groupby必须配合聚合函数、 关于agglist 一些groupby试验 1. groupby对象之后。sum(一个列名) 2. groupby对象…

第11篇:vue3 中 props 的使用

第一步&#xff1a;App.vue 中发送数据&#xff1a; <template> <Person :list"persons"/> //注意多个的话 中间是没有 , // <Person a "哈哈中" :list persons /> </template> let persons reactive([ {id:e98219e12,n…

AIGC视频生成模型:Stability AI的SVD(Stable Video Diffusion)模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Stability AI的视频生成模型SVD(Stable Video Diffusion)模型&#xff0c;这家公司在图像生成领域富有盛名&#xff0c;开发并维护了知名开源项目SD系列…

编程题-两数相加(中等)

题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这…

软件测试 —— 性能测试(jmeter)

软件测试 —— 性能测试&#xff08;jmeter&#xff09; 什么是jmeter安装jmeterjmeter常用组件线程组取样器结果树 我们之前学习了接口测试工具Postman&#xff0c;我们今天要学习的是性能测试工具——jmeter 什么是jmeter Apache JMeter 是一个开源的性能测试工具&#xff…

Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)

准备工作 Kubernetes v1.28.0搭建教程请参考&#xff1a;Kubernetes v1.28.0集群快速搭建教程-CSDN博客 查看当前集群nodes都是ready状态 查看当前pods都是running状态 下载并修改配置文件 下载 recommended.yaml &#xff0c;下载好之后&#xff0c;进入文件编辑 下载地址…

(2024,MLLM,Healthcare,综述)多模态学习是否已在医疗保健领域实现通用智能?

Has Multimodal Learning Delivered Universal Intelligence in Healthcare? A Comprehensive Survey 目录 0. 摘要 1. 简介 5. MLLM 5.1 模态编码器与跨模态适配器 5.1.1 图像编码器 (Image Encoder) 5.1.2 语言模型 (Language Model) 5.1.3 跨模态适配器 (Cross-moda…

图形化数据报文转换映射工具

目录 概要整体架构流程技术名词解释技术细节小结 概要 在当今数字化时代&#xff0c;数据的处理和分析是企业、科研机构以及各类组织日常运营的核心环节。数据来源广泛&#xff0c;格式多样&#xff0c;常见的数据格式包括XML&#xff08;可扩展标记语言&#xff09;和JSON&a…

如何打造一个高并发系统?

今天和大家聊聊作为一个后端开发&#xff0c;在实际工作中&#xff0c;我们如何打造一个高并发的系统&#xff1f; 如下图所示&#xff0c;大概有六个层面&#xff0c;我们结合具体的场景直播间签到去一一细说。 一、前端 1、打散请求&#xff1a;即把用户的接口分散一点去请求…

acm培训 part 1(学习总结)

第一部分的重点为语法糖&#xff0c;时空复杂度&#xff0c;stl容器等等&#xff0c;下面就简单介绍一下这些部分。 1. 语法糖 1.1 定义 语法糖是由英国计算机科学家彼得约翰兰达提出的一个术语&#xff0c;指的是编程语言中添加的某种语法&#xff0c;这种语法对语言的功能…

【ComfyUI】python调用生图API,实现批量出图

官方给的示例&#xff1a; https://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/websockets_api_example.pyhttps://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/websockets_api_example.pyhttps://github.com/comfyanonymous/ComfyU…

【2024年华为OD机试】(B卷,100分)- 非严格递增连续数字序列 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 给定一个仅包含大小写字母和数字的字符串&#xff0c;要求找出其中最长的非严格递增连续数字序列的长度。非严格递增连续数字序列指的是序列中的数字从左到右依次递增或保持不变&#xff0c;例如 12234 就是一个非严格递增连续数字序列。 输入描述 输…

C# OpenCV机器视觉:红外体温检测

在一个骄阳似火的夏日&#xff0c;全球却被一场突如其来的疫情阴霾笼罩。阿强所在的小镇&#xff0c;平日里熙熙攘攘的街道变得冷冷清清&#xff0c;人们戴着口罩&#xff0c;行色匆匆&#xff0c;眼神中满是对病毒的恐惧。阿强作为镇上小有名气的科技达人&#xff0c;看着这一…

Android Audio音频系统

一、Audio音频架构简介 二、Android Audio系统框架 三、Audio架构以及各层的代码分布图 四、音频框架在Android系统中的进一步细化 五、创建声卡和注册声卡 六、Android Audio系统的结构 七、Audio音频原理介绍 八、Audio音频策略制定与策略执行的调用流程 九、Android…

配电自动化系统“三区四层”数字化架构

目录 一、“三区四层”数字化架构的特点和优势 二、“三区四层”数字化架构面临的挑战 三、针对“三区四层” 数字化架构在实际应用中面临挑战的措施 配电自动化系统 “三区四层” 数字化架构是一种用于规范和指导配电自动化系统建设与运行的体系结构&#xff0c;对保障电力…

编程界“华山论剑”:PHP与Go,谁主沉浮?

在编程的广阔天地里&#xff0c;选择一门合适的编程语言就如同为一场冒险挑选趁手的武器&#xff0c;至关重要却又常常令人纠结。当我们面对 PHP 与 Go 这两种备受瞩目的编程语言时&#xff0c;这种纠结愈发明显&#xff1a;PHP&#xff0c;作为 Web 开发领域的老牌劲旅&#x…

element tbas增加下拉框

使用Tabs 标签页的label插槽&#xff0c;嵌入Dropdown 下拉菜单&#xff0c;实现Tabs 标签页增加下拉切换功能 Tabs 标签页 tab-click"事件"&#xff08;这个事件当中到拥有下拉框的tab里时&#xff0c;可以存一下Dropdown 第一个菜单的id&#xff0c;实现点击到拥有…

AIGC视频生成模型:ByteDance的PixelDance模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance&#xff0c;论文于2023年11月发布&#xff0c;模型上线于2024年9月&#xff0c;同时期上线的模型还有Seaweed&…