Postman基础功能-断言与日志

news2025/5/22 10:17:17

        若能脱颖而出,何必苦苦融入。大家好,在 API 测试的领域中,Postman 是一款极为强大且广泛使用的工具。其中,断言和日志调试功能扮演着至关重要的角色。

一、介绍

        断言允许我们在测试过程中验证 API 的响应是否符合预期。通过设定各种条件和预期值,我们可以精确地检查响应的状态码、头部信息、数据内容等关键要素。这就像是为 API 测试加上了一道质量检测关卡,确保其返回的结果准确无误。帮助我们在开发过程中及时发现问题,避免潜在的错误蔓延到后续的环节。

        而日志调试则像是测试过程中的一盏明灯。能记录下测试执行的每一个细节,包括请求的发送、响应的接收以及中间的各种交互信息。当遇到问题或异常时,我们可以通过查看日志来追溯整个过程,找到问题的根源所在。日志不仅有助于故障排查,还能让我们更好地理解测试的执行情况,为优化测试策略和改进 API 提供有力的依据。

        通过巧妙地运用 Postman 的断言和日志调试功能,测试人员能够更高效地进行 API 测试,提高测试的覆盖度和准确性。共同助力我们构建出更加稳定、可靠的 API,为软件的质量保驾护航。无论是新手还是经验丰富的开发者,深入理解和掌握这两项功能都将极大地提升 API 测试工作的价值和效果。

        希望这篇介绍能让你对 Postman 断言和日志调试有一个初步的了解和认识,开启你在 API 测试领域更深入探索的旅程。

二、断言

在Postman工具中,断言功能是非常方便并且强大的,下面是Postman断言的一些特点:

  • 断言的编写位置:Tests标签
  • 断言所使用语言:JavaScript
  • 断言的执行顺序:在请求接口返回响应体数据后执行
  • 断言的执行结果查看:Test Results

        编写断言代码用到的编程语言是 JavaScript,Postman 已经给大家内置了一些常用的断言。当我们使用到的时候,只需从右侧点击其中某个断言类型,该断言对应的断言代码块,就会在文本框中自动生成,非常方便。

接下来列举一些常用的断言类型

断言状态码(Status code:Code is 200)

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200); // 这里填写的 200 是预期结果,实际结果是请求返回结果
});

断言响应头(Response headers:Content-Type header check)

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type"); // 断言响应头中Content-Type是否存在
});

断言响应体包含某字符串(Response body:Contains string)

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("测开人员测试专用脚本"); // 断言响应体文本中是否包含"测开人员测试专用脚本"
});

断言响应体等于某字符串(Response body : is equal to a string)

pm.test("Body is correct", function () {
    pm.response.to.have.body("预期结果响应体文本"); // 断言响应体文本等于"预期结果响应体文本"
});

断言响应体中某个KEY对应的值(Response body : JSON value check)

需要该接口响应体必须返会是的 JSON,否则会报错。

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.eql('操作成功'); // 断言响应体中msg字段对应的值是否是'操作成功'
});

断言响应时间(Response time is less than 200ms)

一般这个断言会用在性能测试。

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200); // 断言接口响应时间在200毫秒以内
});

断言示例:

以下是一个接口的响应体示例:

{
    "code": 0,
    "msg": "操作成功",
    "data": [
        {
            "id": 87,
            "created_at": "2024-05-08 17:34:24",
            "updated_at": "2024-05-08 17:34:10",
            "deleted_at": 0,
            "create_user": 9,
            "update_user": 9,
            "file_name": "locust_worker.py",
            "file_desc": "测开人员测试专用脚本",
            "file_content": "from locust import HttpUser, task\r\n\r\nclass Dummy(HttpUser):\r\n\r\n    @task(1)\r\n    def get_root(self):\r\n        self.client.get(\"/\")\r\n",
            "type": 1,
            "out_file": "",
            "cron": "",
            "notice_type": 0,
            "notice_content": "",
            "receiver": "",
            "state": 2
        }
    ]
}

1、断言状态码是否为200

2、断言msg是否为操作成功

3、断言返回的data中是否包含 "测开人员测试专用脚本" 文本。

点击“Send”发送请求,运行后的断言结果如下图:

        总结,Postman 的断言功能十分强大且关键,能够对 API 响应进行多方面的验证。可以精确地检查响应的状态码是否符合预期,确保其正确性;能细致地核验响应头部信息,保证关键信息的准确性;还能深入到数据内容层面,对返回的数据结构、具体字段值等进行严格核对,同时通过设定灵活的条件判断来全面评估响应是否满足特定要求,以这种方式有力地提升了测试的准确性和可靠性,让我们能及时发现 API 可能存在的问题,保障 API 质量达到预期标准。

三、日志

        Postman 的日志功能具有重要作用,通过日志功能,我们可以清晰地了解每一次测试的执行情况,在遇到问题或错误时,能够快速定位和分析原因。就像是测试过程的“记录仪”,为我们提供了宝贵的线索和信息,帮助我们更好地理解 API 的行为和交互,以便进行有效的调试和优化。日志功能还可以帮助我们追踪测试的历史记录,方便进行回顾和总结,为后续的测试工作提供参考和借鉴。总之,日志功能是 Postman 中非常实用且不可或缺的一部分,对于提升测试效率和质量有着显著的意义。

        在进行接口测试的过程中,常常会由于代码存在问题而引发报错情况,此时,查看日志就变得极为重要。Postman 恰好提供了这样的功能,它准许我们在脚本里编写打印语句,从而能够查看所打印出来的结果。与此同时,还能够查看每一个请求所对应的日志信息。

编写日志打印语句

        在 Postman 里,运用 JavaScript 来编写日志打印语句,其编写的位置能够是 Pre-request Script 或者 Tests 标签。例如编写这样的打印语句:console.log("hello,postman")

如下图所示:

查看日志

在Postman中查看日志输出的方式有两种

1、点击工具左下角的Console按钮。

2、点击Postman工具栏中的View,然后点击“Show Postman Console”。

日志打印展示如下图:

        总结,Postman 的日志功能相当实用且关键。可以让我们全面的记录接口测试过程中的诸多细节,包括请求的各项参数、发送时间以及响应的状态码、内容和时间等。通过这一功能,我们能清晰地追溯每一次测试的完整轨迹,当遇到问题或异常时,可借助日志迅速定位根源并加以分析。无论是在排查故障还是深入理解 API 行为方面,日志功能都发挥着重要作用,为我们优化测试流程、提升测试效果提供了有力的支持和依据,希望本篇文章可以给大家带来一定的帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1672045.html

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

相关文章

数字人解决方案——AniTalker声音驱动肖像生成生动多样的头部说话视频算法解析

1.概述 AniTalker是一款先进的AI驱动的动画生成工具,它超越了简单的嘴唇同步技术,能够精准捕捉并再现人物的面部表情、头部动作以及其他非言语的微妙动态。这不仅意味着AniTalker能够生成嘴型精准同步的视频,更重要的是,它还能够…

使用LangChain和Neo4j快速创建RAG应用

大家好,Neo4j 通过集成原生的向量搜索功能,增强了其对检索增强生成(RAG)应用的支持,这标志着一个重要的里程碑。这项新功能通过向量索引搜索处理非结构化文本,增强了 Neo4j 在存储和分析结构化数据方面的现…

1-3ARM_GD32点亮LED灯

简介: 最多可支持 112 个通用 I/O 引脚(GPIO),分别为 PA0 ~ PA15,PB0 ~ PB15,PC0 ~ PC15,PD0 ~ PD15,PE0 ~ PE15,PF0 ~ PF15 和 PG0 ~ PG15,各片上设备用其来实现逻辑输入/输出功能。…

基于SpringBoot+微信小程序的订餐(点餐)配送系统设计与实现+毕业论文(12000字)

系统介绍 本微信小程序在线订餐系统管理员功能可以修改个人中心,用户管理,菜品分类管理,菜品信息管理,订单信息管理,取消订单管理,订单配送管理,菜品评价管理以及系统管理。微信小程序用户可以…

【玄机平台】应急响应

前言: 感谢玄机平台靶机的提供,让我学到了不少东西 平台题解 : 第一章 应急响应-webshell查杀 1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx} ssh连接 下载/var/www/html源码(finsehll连直接下)压缩丢…

日志的基本用法

目标 1. 掌握如何设置日志级别 2. 掌握如何设置日志格式 3. 掌握如何将日志信息输出到文件中 1. logging模块 Python中有一个标准库模块logging可以直接记录日志 1.1 基本用法 import logging logging.debug("这是一条调试信息") logging.info("这是一条…

【C++杂货铺】红黑树

目录 🌈前言🌈 📁 红黑树的概念 📁 红黑树的性质 📁 红黑树节点的定义 📁 红黑树的插入操作 📁 红黑树和AVL树的比较 📁 全代码展示 📁 总结 🌈前言…

C#【进阶】常用泛型数据结构类

常用泛型数据结构类 文章目录 常用泛型数据结构类1、List1、List的本质2、声明3、增删查改4、遍历思考 存储基类类型列表 2、Dictionary1、Dictionary的本质2、声明3、增删查改4、遍历思考1 数字对应的大写思考 2 字母出现的次数 3、顺序存储和链式存储1、数据结构2、线性表3、…

前端铺子-NodeJS后端:基于Node.js构建高效后端服务的探索与实践

一、引言 随着前端技术的快速发展,越来越多的开发者开始关注前后端分离的开发模式。前端铺子作为一个旨在服务前端开发者的开源项目,近期推出了基于Node.js的后端系统。该系统通过整合Node.js、Nodemon和MySQL等技术,为前端开发者提供了一个…

每日一题 城市群的数量

题目解析 城市群数量_牛客题霸_牛客网 当解决这个问题时,首先需要理解题目要求。题目中给出了一个城市之间的邻接矩阵,矩阵中的元素表示城市之间是否直接相连。如果两个城市直接相连,或者通过其他城市间接相连,它们就属于同一个城…

Java面试八股之String s = “String“;和String s = new String(“String“);有什么区别

Java中String s "String";和String s new String("String");有什么区别 字符串字面量("String"): 常量池:使用字面量方式创建字符串时,Java虚拟机(JVM)会在运…

数组 | 双指针经典题目

Leetcode977:有序数组的平方 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/squares-of-a-sorted-array/d…

AI2024(64bit) Adobe Illustrator 软件安装包下载

AI2024(64bit) Adobe Illustrator 软件安装包下载地址: 百度网盘下载https://pan.baidu.com/s/1C10-2JVN1rxFF5VFRuV2Yw?pwdSIMS 在创意设计的浩瀚宇宙中,Adobe Illustrator 2024如同一颗璀璨新星,以其无与伦比的创新功能和优化体验&#x…

AI翻唱+视频剪辑全流程实战

目录 一、AI翻唱之模型训练 (1)模型部署 (2)数据集制作——搜集素材 (3)数据集制作——提升音频质量 方法一:使用RVC提供的音频处理功能。 方法二:可以使用音频剪辑工具Ad…

vivado Kintex UltraScale+ 配置存储器器件

Kintex UltraScale 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Kintex UltraScale 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 , 并支持通过 Vivado 软件对其中所列非易失性存…

CommandLineRunner和ApplicationRunner接口实现类中run方法发生异常导致spring程序关闭

今天其他组的一个程序在k8s中启动报错,启动之后立马就关闭了。我去看日志,发现最后面报了一个UnknownHostException异常,感觉是这个原因导致的,然后查看异常栈。定位到一个CommandLineRunner接口实现类,这个实现类里面…

一道dp错题

dis(a,b)就是两点之间的距离公式 那么这道题该怎么解呢,.先看数据范围x,y<1e4,so,18个点两点之间距离最大18*1e4*sqrt(2)<2^18,所以如果跳过的点大于18个点,那么显然一个区间内最多不会跳跃超过17个点 现在我们想知道前i个点跳跃几次在哪跳跃能够达到最小花费,不妨设跳…

STM32(GPIO)

GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电…

迄今为止最全- 前端性能优化

简介 当我们说前端性能优化的时候&#xff0c;指的可能是不同场景的性能优化。前端涉及性能优化的场景主要有&#xff1a; 项目构建性能优化 页面性能优化 加载时性能优化 运行时性能优化 构建性能主要指构建速度&#xff0c;优化方法和打包工具直接相关&#xff0c;主要…

航空科技:探索飞机引擎可视化技术的新视界

随着航空技术的飞速发展&#xff0c;飞机引擎作为航空器最为关键的部件之一&#xff0c;其性能直接影响到飞机的安全性、经济性和环保性。因此&#xff0c;飞机引擎可视化技术的应用日益成为航空行业研究和发展的热点。 通过图扑将复杂的飞机引擎结构和工作原理以直观、生动的…