Postman断言

news2024/12/24 11:42:49

目录

概述

断言工作原理

常用断言方法

Status code: Code is 200

Status code: Successful POST request

Status code: Code name has string

Response body: Contains string

Response body: JSON value check

 Response body: ls equal to a string

Response headers: Content-Type headercheck

Response time is less than 200ms

Response body: Convert XML body to a JSON Object

Use Tiny Validator for JSON data

示例

常规断言

示例1

示例2

示例3

动态参数断言

​全局断言


概述

一个完整的接口测试,包括:请求->获取响应正文->断言。其中,断言是对请求的响应结果进行操作,判断预期结果与实际结果是否一致。

在 postman 中封装了我们常见的断言(Tests),断言是用于验证API请求和响应的重要工具,Tests 除了可以作为断言,还可以当做后置处理器,常用作获取当前接口的响应,传递给下一个接口,以及控制多个接口间的执行顺序

断言用于验证HTTP请求的响应是否符合预期。通过断言,可以检查状态码、响应头、响应体等是否符合预期。在Postman中,可以使用各种断言方法来验证响应。

断言工作原理

常用断言方法

Postman帮我们把常用的断言方法给准备好了,右侧框内下拉选择,点击自动生成断言代码。

Status code: Code is 200

Status code:检查返回的状态码是否符合预期。

//检查响应状态码是否为200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

常见状态码:

Status code: Successful POST request

断言成功的post请求返回码

pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});

Status code: Code name has string

检查响应信息中是否包含某个预期值

pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});

Response body: Contains string

Response body:检查响应体中是否包含指定的字符串或值。

//检查响应信息中是否包含某些指定的字符串
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

Response body: JSON value check

//检查从JSON响应中获取到某个字段,判断其是否与预期字段一致
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

 Response body: ls equal to a string

//检查实际获取的响应体(即 Body 信息)与预期结果的响应体是否一致
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

Response headers: Content-Type headercheck

Response headers:检查响应头是否包含指定的值。

//检查响应中的头域信息(Headers)是否与预期一致
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

Response time is less than 200ms

判断实际响应时间是否低于预期时间

//检查请求耗时小于200ms
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

Response body: Convert XML body to a JSON Object

转化XML格式的响应成JSON对象

var jsonObject = xml2Json(responseBody);

Use Tiny Validator for JSON data

为JSON数据使用tiny验证器

var schema = {
    "items": {
        "type": "boolean"
    }
};

var data1 = [true, false];
var data2 = [true, 123];

pm.test('Schema is valid', function () {
    pm.expect(tv4.validate(data1, schema)).to.be.true;
    pm.expect(tv4.validate(data2, schema)).to.be.true;
});

示例

示例接口详细信息看前文:接口介绍

常规断言

示例1

断言一般包括状态断言和业务断言,如下图接口1是获取接口统一鉴权码token接口,它的关键字是access_token,采用Status code: Code is 200 检验响应状态码为200(成功),采用Response body: Contains string 检验响应中包含字符串"access_token"。

//状态断言
pm.test("检查返回状态码为200", function () {
    pm.response.to.have.status(200);
});
//业务断言
pm.test("检查响应中包含access_token", function () {
    pm.expect(pm.response.text()).to.include("access_token");
});

点击Send 按钮发送请求,点击Test Results 查看断言结果,下图可见测试点全部通过。

示例2

接口3是编辑标签接口,它的返回参数是errcode和errmsg,采用Response body: JSON value check

pm.test("检查errcode为0", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.errcode).to.eql(0);
});

示例3

使用Response headers: Content-Type headercheck 检查接口1响应头中是否包含Content-Type响应头,使用Response time is less than 200ms 检查接口响应时间是否低于200ms

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

接口1响应头中包含Content-Type,结果通过;响应时间为332ms,高于200ms,结果失败。

动态参数断言

接口2是创建标签接口,它的关键字是标签名,前面已经将标签名使用自定义动态参数,将标签名加入自定义动态参数 {{times}} ,每次生成当前时间的时间戳,使得标签名不重复。结果报错,将自定义参数 {{times}} 当成字符串了。

解决上述问题,可以通过拼接全局变量的方式在断言中获取自定义动态参数来解决(前面已经将{{times}}设为全局变量)

①+pm.globals.get("times")

pm.test("检查响应中包含标签名", function () {
    pm.expect(pm.response.text()).to.include("码尚教育"+pm.globals.get("times"));
});

②+globals["times"]

pm.test("检查响应中包含标签名", function () {
    pm.expect(pm.response.text()).to.include("码尚教育"+globals["times"]);
});

 ③+globals.times

pm.test("检查响应中包含标签名", function () {
    pm.expect(pm.response.text()).to.include("码尚教育"+globals.times);
});

全局断言

例如:每个接口都要进行状态断言,就可将状态断言设置为全局断言

发送请求后,每个接口的Test Results ,都有测试点状态码200通过。

参考:

码尚Postman学习

postman第7讲-核心功能六:Tests(断言)

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

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

相关文章

鸿萌数据恢复服务:SQL Server 中的 GAM、SGAM、IAM,及数据库损坏的修复方法

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时,鸿萌是国际主流数据恢复软件(Stellar、UFS、R-Studio、ReclaiMe Pro 等)的授权代理商,为专…

开源的数据库增量订阅和消费的中间件——Cancl

目录 工作原理 MySQL主备复制原理 Canal 工作原理 主要功能和特点 应用场景 实验准备 安装JDK11 下载MySQL8.0 配置canal.admin 配置canal-deployer 测试数据读取 新增一台主机用做被同步的目标机器测试 官方地址:https://github.com/alibaba/canal?ta…

极狐 GitLab 依赖扫描:助力开发者管理软件供应链

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…

LeetCode.22。括号生成

题目描述: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组 输入输出实例: 思路:对于这道题目我们可以用回溯法,创建一个函数backtrack(当前字符,左括…

解锁 Starknet 的深层洞察:利用 Dune 构建动态数据可视化

原文:https://dev.to/lordghostx/queries-to-insights-visualizing-starknet-data-with-dune-j8p 作者:LordGhostX 编译:TinTinLand Starknet 的链上数据为其区块链生态系统提供了丰富的洞察。它为用户活动、交易模式和网络交互提供了全面…

【k8s从节点报错】error: You must be logged in to the server (Unauthorized)

k8s主节点可以获取nodes节点信息,但是从节点无法获取,且报错“error: You must be logged in to the server (Unauthorized)” 排查思路: 当时证书过期了,只处理的主节点的证书过期,没有处理从节点的 kubeadm alpha …

ctfshow-web入门-sql注入(web221、web222、web223)limit 注入与 group 注入

目录 1、web221 2、web222 3、web223 1、web221 limit 注入 分页 sql 格式:select * from table limit (start-1)*pageSize,pageSize; 其中 start 是页码,pageSize 是每页显示的条数。 比如: 查询第1条到第10条的数据的sql是&#xff…

倒计时启动!2024东北医院信息网络大会即将在这里举办!

随着全球医疗行业步入信息化转型的新时代,2024年8月24日至25日,以“科技赋能,重塑未来医疗”为主题的2024东北医院信息网络大会将在长春开曼宴都酒店(长春市高新区海外街1号)隆重举行。此次大会与国家卫健委、中医药管…

Python青少年简明教程:输入输出

Python青少年简明教程:输入输出 Python的输入输出是编程中的基本操作。Python的标准输入输出主要通过内置的input()函数和print()函数来实现。这两个函数使得从用户那里接收输入和向用户展示输出变得非常简单。 输入(Input)函数 input()函数…

Denosing RayDN-对同一射线的误检测优化

Denosing操作理解 DN-DETR增加denosing操作,帮助快速拟合,提高了目标检测任务中的效率和精度。通过这种方式,DN-DETR 克服了原始 DETR 的一些限制,使其在实际应用中具有更好的性能和鲁棒性。 GTBoxes通过随机偏移H, L,W进行偏移&…

Nuxt3【路由中间件】middleware

路由中间件类似路由守卫,即在导航到特定路由之前运行一段代码 内联路由中间件 在页面中定义的路由中间件,因没有名称,所以也叫匿名路由中间件 definePageMeta({middleware: [function (to, from) {console.log("执行了内联路由中间件&q…

[Meachines] [Medium] Popcorn SQLI+Upload File+PAM权限提升

信息收集 IP AddressOpening Ports10.10.10.6TCP:22,80 $ nmap -p- 10.10.10.6 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.1p1 Debian 6ubuntu2 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: …

2024新型数字政府综合解决方案(七)

新型数字政府综合解决方案通过集成人工智能、大数据、区块链和云计算技术,创建了一个高度智能化和互联互通的政府服务平台,旨在全面提升行政效率、服务质量和透明度。该平台实现了跨部门的数据整合与实时共享,利用人工智能进行智能决策支持和…

RockerMQ学习

消息中间件以前常用RabbitMQ和ActiveMQ,由于业务需要,后期业务偏向大数据,现着重学习一下RocketMQ(RocketqMQ原理同ctg-mq),后续更新Kafka 一、RocketMQ特性 Kafka特性 (高性能分布式&#xff…

MySQL数据库进阶知识(三)《优化》

学习目标: 一周掌握SQL优化知识 学习内容: 一、插入数据 1.insert优化 批量插入 insert into tb_test values(1,Tom),(2,Cat),(3,Jerry);手动提交事务 start transaction; insert into tb_test values(1,Tom),(2,Cat),(3,Jerry); insert into tb_te…

03 网络编程 TCP传输控制协议

目录 1、TCP基本特征 2、TCP通信流程基本原理 (1)基本原理 (2)TCP通信代码实现 (3)核心API解析 1)地址绑定--bind 2)设置监听-listen 3)等待连接请求-accept-产生一个已连接套接字 4&a…

WSL2与Windows之间的网络互访

文章目录 1.环境2.WSL访问Windows上的服务3.Windows访问WSL上的服务 1.环境 1.宿主机 Windows 10 2.WSL ubuntu 18.04 LTS 3.Windows 10上的 vEthernet (WSL) 已启用 2.WSL访问Windows上的服务 1.防火墙设置 2.查看访问Windows的IP 172.21.112.1, 使用该IP访问Windows上的服务…

玩机进阶教程-----回读 备份 导出分区来制作线刷包 回读分区的写入与否 修改xml脚本

很多工作室需要将修改好的系统导出来制作线刷包。前面分享过很多制作线刷包类的教程。那么一个机型中有很多分区。那些分区回读后要写入。那些分区不需要写入。强写有可能会导致不开机 不进系统的故障。首先要明白。就算机型全分区导出后在写回去 都不一定可以开机进系统。那么…

【JVM】JVM 实战调优指南赋案例(保姆篇)

文章目录 JVM 实战调优指南引言1. JVM基础知识1.1 JVM架构1.2 JVM垃圾回收 2. 垃圾回收调优2.1 垃圾回收日志2.2 GC日志分析2.3 调优策略2.3.1 调整堆大小2.3.2 选择合适的GC算法2.3.3 调整垃圾回收线程 3. 内存管理调优3.1 内存泄漏检测3.2 堆转储分析3.3 内存分配策略 4. 线程…

基于飞桨框架的稀疏计算使用指南

本文作者-是 Yu 欸,华科在读博士生,定期记录并分享所学知识,博客关注者5w。本文将详细介绍如何在 PaddlePaddle 中利用稀疏计算应用稀疏 ResNet,涵盖稀疏数据格式的础知识、如何创建和操作稀疏张量,以及如何开发和训练…