当前位置: 首页 > news >正文

Postman断言与依赖接口测试详解!

在接口测试中,断言是不可或缺的一环。它不仅能够自动判断业务逻辑的正确性,还能确保接口的实际功能实现符合预期。Postman作为一款强大的接口测试工具,不仅支持发送HTTP请求和接收响应,还提供了丰富的断言功能,帮助测试人员验证接口的行为是否符合预期。

POSTMAN的断言

01、断言的基本概念

断言是对接口响应结果的验证,通过检查响应的状态码、正文、头部字段或响应时间等,确保接口返回的数据符合测试预期。在Postman中,断言通常在当前请求发送之后,通过编写测试脚本来实现。

02、响应状态码断言

响应状态码是HTTP协议中用于表示请求处理结果的数字代码。在Postman中,可以使用以下脚本对响应状态码进行断言:

pm.test("响应状态码是200?", function () {      pm.response.to.have.status(200);  });

这段脚本会检查响应的状态码是否为200,如果不是,则测试失败。

03、响应正文断言

响应正文是接口返回给客户端的数据内容。在Postman中,可以使用以下两种方式对响应正文进行断言:

  • 包含子字符串:检查响应正文中是否包含指定的子字符串。

  • JSON断言:对响应正文进行JSON解析,并检查特定字段的值是否符合预期。

例如,以下脚本用于断言响应正文中包含特定的消息内容:

pm.test("断言响应结果字段是", function () {      var jsonData = pm.response.json();      pm.expect(jsonData.msg).to.eql("操作成功");  });

这段脚本会解析响应正文为JSON对象,并检查msg字段的值是否为“操作成功”。

04、数据格式断言

除了对具体字段的值进行断言外,还可以对响应数据的格式进行断言。例如,可以检查响应正文是否为对象、特定字段是否为字符串或数字等。以下脚本用于断言响应数据的格式:

const jsonData = pm.response.json();  pm.test("测试响应文本的数据类型", () => {      pm.expect(jsonData).to.be.an("object");      pm.expect(jsonData.name).to.be.a("string");      pm.expect(jsonData.age).to.be.a("number");      pm.expect(jsonData.hobbies).to.be.an("array");      pm.expect(jsonData.website).to.be.undefined;      pm.expect(jsonData.email).to.be.null;  });

05、其他断言方式

除了上述常见的断言方式外,还可以使用其他断言方式,如响应时间断言等。这些断言方式可以根据测试需求进行选择和组合。

依赖接口的测试

在实际项目中,接口之间往往存在依赖关系。例如,一个接口可能需要先调用另一个接口获取数据,然后再将获取到的数据作为参数传递给当前接口进行测试。在Postman中,可以通过以下方式实现依赖接口的测试:

1. 使用环境变量

在Postman中,可以使用环境变量来存储依赖接口返回的数据。例如,可以先调用依赖接口获取用户ID,然后将用户ID存储为环境变量,并在后续接口测试中引用该环境变量。

2. 使用Pre-request Script

Pre-request Script是Postman中用于在发送请求之前执行的脚本。可以在Pre-request Script中调用依赖接口,并将返回的数据存储为全局变量或环境变量,供后续请求使用。

3. 使用Collection Runner

Collection Runner是Postman中用于批量运行集合中请求的工具。在Collection Runner中,可以指定依赖关系的顺序,并依次运行集合中的请求。通过这种方式,可以方便地实现依赖接口的测试。

三、实战案例

以下是一个简单的实战案例,展示了如何在Postman中进行断言和依赖接口的测试:

案例背景

假设有两个接口:

  • 接口A:用于获取用户信息,返回用户ID和用户名。

  • 接口B:用于获取用户的订单信息,需要传入用户ID作为参数。

测试步骤

  1. 调用接口A获取用户信息,并将用户ID存储为环境变量。

  2. 在Pre-request Script中或直接在接口B的请求中引用环境变量中的用户ID。

  3. 调用接口B获取用户的订单信息,并对响应结果进行断言。

具体实现

  1. 创建一个新的集合,并添加两个请求,分别对应接口A和接口B。

  2. 在接口A的请求中,编写测试脚本将用户ID存储为环境变量:

pm.test("存储用户ID为环境变量", function () {      var jsonData = pm.response.json();      pm.environment.set("user_id", jsonData.id);  });

3.在接口B的请求中,使用环境变量中的用户ID作为参数:

https://example.com/orders?user_id={{user_id}}

4.在接口B的请求中,编写测试脚本对响应结果进行断言:

pm.test("断言订单数量大于0", function () {      var jsonData = pm.response.json();      pm.expect(jsonData.orders.length).to.be.greaterThan(0);  });

5.使用Collection Runner运行集合中的请求,并查看测试结果。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

相关文章:

Postman断言与依赖接口测试详解!

在接口测试中,断言是不可或缺的一环。它不仅能够自动判断业务逻辑的正确性,还能确保接口的实际功能实现符合预期。Postman作为一款强大的接口测试工具,不仅支持发送HTTP请求和接收响应,还提供了丰富的断言功能,帮助测试…...

github打不开网络问题

当打开github出现超时或者网络不能访问的情况时,我们进行如下方法解决: 1,ping gitbub.com查看域名分析的DNS IP C:\Users\86156>ping github.com 正在 Ping github.com [20.205.243.166] 具有 32 字节的数据: 来自 20.205.243.166 的回复…...

智能教育工具:基于SpringBoot的在线试题库

1 绪论 1.1 研究背景 现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时间变得更加地宝贵化,因为每天的…...

typescript 如何跳过ts类型检查?

文章目录 前言any类型条件判断进行使用断言加注释跳过ts检查 前言 typescript 的使用,虽然让代码更加规范,利于维护,但也给开发带来很多麻烦。为了跳过很多ts的类型检查,大家也是费尽心思,下面就介绍一些常用的方式&a…...

详解ReentrantLock--三种加锁方式

目录 介绍AQS: 直观方式解释加锁的流程: Node是什么:它里面有什么属性呢 图解队列的排队过程: 源码分析三种加锁流程: 我们先讲解一下非公平锁的加锁流程: Lock()方式加锁: 在源码里对于Lock()的解…...

SQL 基础语法(一)

文章目录 1. SQL 分类2. 数据库操作3. 数据表操作4. 增删改操作5. 查询操作6. 用户管理7. 权限控制 1. SQL 分类 2. 数据库操作 #创建数据库 create database if not exists test;#查询所有数据库 show databases;#查询当前数据库 select database();#删除数据库 drop databas…...

Python酷库之旅-第三方库Pandas(190)

目录 一、用法精讲 881、pandas.Index.is_方法 881-1、语法 881-2、参数 881-3、功能 881-4、返回值 881-5、说明 881-6、用法 881-6-1、数据准备 881-6-2、代码示例 881-6-3、结果输出 882、pandas.Index.min方法 882-1、语法 882-2、参数 882-3、功能 882-4、…...

Spring学习笔记_19——@PostConstruct @PreDestroy

PostConstruct && PreDestroy 1. 介绍 PostConstruct注解与PreDestroy注解都是JSR250规范中提供的注解。 PostConstruct注解标注的方法可以在创建Bean后在为属性赋值后,初始化Bean之前执行。 PreDestroy注解标注的方法可以在Bean销毁之前执行。 2. 依赖…...

《云计算网络技术与应用》实训8-1:OpenvSwitch简单配置练习

1.按《云计算网络技术与应用》实训5-1进行环境配置,安装好OVS 2.开启OVS虚拟交换机 3.创建一个网桥br0 4.查看网桥列表 5.把ens34网卡连接到网桥br0上 6. 查看网桥br0所有端口 7.列出网卡ens34连接的所有网桥列表 8.查看OVS网络状态 9.将网桥br0上连接的网卡ens34删…...

【架构艺术】服务架构稳定性的基础保障

一个产品随着不断研发,其服务架构的复杂度会越来越高。随着产品的用户体量变大,为了保证产品能够长线运营,就需要保证整个服务架构的稳定性。因此,今天这篇文章,就从实操的角度,粗浅讨论一下,服…...

Python中使用pip换源的详细指南

在Python开发过程中,我们经常需要安装各种第三方库。pip是Python的包管理工具,用于安装和管理Python库。然而,由于网络原因,有时访问默认的Python包索引(PyPI)可能会比较慢。这时,我们可以通过更…...

一站打包国际智慧教育自主学练软件资源

👑🌟一站打包国际智慧教育自主学练软件与资源平台,欧美学校正在使用,不出国就可以学👒🎈 💛 多元学练:我们正在使用的自主学练软件是美国学校一线教师使用的,涵盖了英语…...

用股票API获取高频行情数据来实现数据分析和量化

用股市API获取高频行情来实现数据分析和量化 使用股市API是一种有效的方式来获取高频行情数据,以便进行行情数据分析和量化交易。Python是一种广泛应用于金融数据领域的编程语言,它提供了丰富的库和工具,可用于与股市API进行交互。通过调用股…...

C++ | Leetcode C++题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; class Solution { public:int countArrangement(int n) {vector<int> f(1 << n);f[0] 1;for (int mask 1; mask < (1 << n); mask) {int num __builtin_popcount(mask);for (int i 0; i < n; i) {if (mask &am…...

【RabbitMQ】01-RabbitMQ

1. MQ MQ可以有更好的并发性。 2. 安装 docker run \-e RABBITMQ_DEFAULT_USERitheima \-e RABBITMQ_DEFAULT_PASS123321 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hm-net\-d \rabbitmq:3.8-management3. 结构 4. 数据…...

使用 ADB 在某个特定时间点点击 Android 设备上的某个按钮

前提条件 安装 ADB&#xff1a;确保你已经在计算机上安装了 Android SDK&#xff08;或单独的 ADB&#xff09;。并将其添加到系统环境变量中&#xff0c;以便你可以在命令行中运行 adb。 USB调试&#xff1a;确保 Android 设备已启用 USB 调试模式。这可以在设备的“设置” -…...

【随笔】对于开发者而言,你对什么事情感到失落?亦或者你上一次感到有成就感是什么时候?你遇到过怎样格局的老板?

这是博主的一篇随笔文章&#xff0c;一起和大家聊聊工作上的一些事和一些感受&#xff0c;我觉得我们这个群体&#xff0c;同样有很多优秀的、幽默的人。只不过有些表达和沟通并不是我们擅长的&#xff0c;包括博主也是&#xff0c;这是我们的劣势和缺点。没关系&#xff0c;这…...

【LeetCode】两数之和返回两数下标、数组形式整数相加

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO 1.两数之和返回两数下标 题目&#xff1a;给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输…...

Kubernetes中的secrets存储

华子目录 2.secrets2.1secrets功能介绍2.2secrets的创建2.2.1从文件创建2.2.2编写yaml文件 2.3secret的使用案例2.3.1将secret挂载到volume中2.3.2设置子目录映射secret密钥2.3.3将secret设置为环境变量2.3.4存储docker register的认证信息spec.imagePullSecrets[] 2.secrets …...

使用 Elastic、OpenLLMetry 和 OpenTelemetry 跟踪 LangChain 应用程序

作者&#xff1a;来自 Elastic Bahubali Shetti Langchain 应用程序的使用正在增长。构建基于 RAG 的应用程序、简单的 AI 助手等的能力正在成为常态。观察这些应用程序更加困难。考虑到现有的各种选项&#xff0c;本博客展示了如何将 OpenTelemetry 检测与 OpenLLMetry 结合使…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...