Postman接口测试之断言,全网最细教程没有之一!

一、断言

在 postman 中我们是在Tests标签中编写断言,同时右侧封装了常用的断言,当然 Tests 除了可以作为断言,还可以当做后置处理器来编写一些后置处理代码,经常应用于:

【1】获取当前接口的响应,传递给下一个接口
【2】控制多个接口间的执行顺序。

二、常见断言方法

1、状态码断言

1)判断接口响应的状态码:Status code: code is 200

pm.test("Status code is 200", function () {//
Status code is 200是断言名称,可以自行修改pm.response.to.have.status(200); 
//这里填写的200是预期结果,实际结果是请求返回结果
});

2)判断接口响应码是否与预期集合中的某个值一致

pm.test("Successful POST request", function () {pm.expect(pm.response.code).to.be.oneOf([201,202]);  //检查响应码是否为201或者202
});

3)判断状态码名称(也就是状态码后面的描述)是否包含某个字符串:Status code:code name has string

pm.test("Status code name has string", function () {pm.response.to.have.status("OK");  //断
言响应状态消息包含OK

2、响应内容断言

断言响应体中包含XXX字符串:Response body:Contains string
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");//
pm.response.text()
});

2)响应结果如果是json,断言响应体(json)中某个键名对应的值:Response body : JSON value check

pm.test("Your test name", function () {var jsonData = pm.response.json();//
获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错pm.expect(jsonData.value).to.eql(100);
//
获取jsonData中键名为value的值,然后和100进行比较
});

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

pm.test("Body is correct", function () {pm.response.to.have.body("response_body_string");//
获取响应体等于response_body_string
});

3、响应头断言

1)断言响应头包含:Response headers:Content-Type header check

1)断言响应头包含:Response headers:Content-Type header check
pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
//断言响应头存在"Content-Type"
});

4、响应速度断言

1)判断实际响应时间是否与低于预期时间:Response time is less than 200ms

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

实例

针对上面的返回结果,我们设置断言如下

注意:postman获取断言时,任何响应都必须转为JsonData 对象。例如我们想获取如下响应信息中键值为 name 的值:

{"reponse": {"person": {"name": "hai","age": 18}}
}

此时我们应该:

//第一步将响应转为 jsonData 对象
jsonData = pm.response.json();
//第二步通过 . 获取到我们想要的 age 的值
var age = jsonData.reponse.person.age;除了单个接口断言外,postman还集合断言和模块断言,风别通过点击集合或者模块,然后点击Edit,进入Test标签进行断言即可,如下图

三、常用断言对应的脚本

三、常用断言对应的脚本

1.清除一个环境变量

   postman.clearEnvironmentVariable("variable_key");

2.断言响应数据中是否存在某个元素

  tests["//断言返回的数据中是否存在__pid__这个元素"] = responseBody.has("pid");

3.断言response等于预期内容

   tests["Body is correct"] = responseBody === "response_body_string";

4.断言json解析后的key的值等于预期内容

   tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args

5.检查response的header信息是否有被测字段

   tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");

6.校验响应数据中,返回的数据类型

   var jsonData = JSON.parse(responseBody);//第一步先转化为json字符串。其中变量(jsonData)可以自行定义......
   tests["//data.category.name__valuse的值的类型是不是string"] = typeof(jsonData.data.category[0].name) == "string";

7.响应时间判断

   tests["Response time is less than 200ms"] = responseTime < 200;

8.设置环境变量

   postman.setEnvironmentVariable("variable_key", "variable_value");

9.断言状态码

   tests["Status code is 200"] = responseCode.code != 400;

10.检查响应码name

   tests["Status code name has string"] = responseCode.name.has("Created");

11.断言成功的post请求返回码

   tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

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

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

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

相关文章

二分/二分查找(整数二分详解+拓展浮点二分)

先上题目 在一个有序数组中&#xff0c;查找x所在的下标。 输入 第一行两个整数n和m。 第二行n个数&#xff0c;表示有序的数列。 接下来m行&#xff0c;每行一个整数x&#xff0c;表示一个询问的数。 输出 对于每个询问如果x在数列中&#xff0c;输出下标。否则输出-1 样…

Linux网络编程: IP协议详解

一、TCP/IP五层模型 物理层&#xff08;Physical Layer&#xff09;&#xff1a;物理层是最底层&#xff0c;负责传输比特流&#xff08;bitstream&#xff09;以及物理介质的传输方式。它定义了如何在物理媒介上传输原始的比特流&#xff0c;例如通过电缆、光纤或无线传输等。…

2024年腾讯云2核4G服务器够用吗?性能测评

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;并发数为10&#xff0c;经阿腾云测试&a…

第三门课:结构化机器学习项目-机器学习策略

文章目录 1 机器学习策略一1.1 为什么是ML策略&#xff1f;1.2 正交化1.3 单一数字评估指标1.4 满足和优化指标1.5 训练、开发及测试集划分1.6 开发集和测试集的大小1.7 什么时候改变开发、测试集和指标&#xff1f;1.8 为什么是人的表现&#xff1f;1.9 可避免偏差1.10 理解人…

【编程项目开源】微信飞机大战(鸿蒙版)

目标 仿微信飞机大战 效果 开发工具 下载DevEco Studio 工程截图 开源地址 https://gitee.com/lblbc/plane_game/tree/master/PlaneGame_hongmeng_ArkTS 关于 厦门大学计算机专业|华为八年高级工程师 专注《零基础学编程系列》 http://lblbc.cn/blog 包含&#xff1a;Ja…

前端Prettier 插件的使用配置(详细)

各个参数代表的意思:printWidth&#xff1a;每行代码的最大长度限制。 tabWidth&#xff1a;选项用于控制制表符的宽度。 useTabs&#xff1a;指定是否使用制表符代替空格。 semi&#xff1a;指定是否在语句的末尾添加分号。 singleQuote&#xff1a;指定是否使用单引号或双引号…

操作系统系列学习——一个实际的schedule函数

文章目录 前言一个实际的schedule函数 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感…

Java后端面试经验分享,~纯分享

本文将从面试、工作、学习三个方面分享最近面试的一些心得以及以后发展的一些规划&#xff0c;仅供参考&#xff0c;哈哈&#xff0c;毕竟本人也很菜&#xff0c;因为菜才要多学习。一会儿也会分享两本Java面试题库&#xff08;题库是b站大学找的&#xff0c;一会儿我也会分享出…

如何将Git拉取项目后,将SSH验证方式修改为HTTPS?

首先在打开项目所在位置的Git BashGUI 查找当前的远程仓库URL&#xff1a; 打开终端或命令提示符&#xff0c;导航到你的项目目录&#xff0c;并使用以下命令查看当前配置的远程仓库URL&#xff1a; git remote -v这会显示如下格式的输出&#xff1a; origin gitgithub.com:用…

python自动化之pytest框架以及数据驱动(第五天)

1.pytest框架需要遵循的规则 &#xff08;1&#xff09;.py 测试文件必须以test 开头(或者以 test结尾) &#xff08;2&#xff09;测试类必须以Test开头&#xff0c;并且不能有 init 方法 &#xff08;3&#xff09;测试方法必须以test 开头 &#xff08;4&#xff09;断言…

电大搜题:开启学习新时代

身处信息化时代&#xff0c;学习的方式已经发生了巨大的变革。在这个多元化的学习环境中&#xff0c;传统的学习模式已经无法满足现代学习者的需求。然而&#xff0c;电大搜题应运而生&#xff0c;为学习者提供了一个高效、便捷的学习途径。 电大搜题&#xff0c;作为黑龙江开…

Java课程实验—作业二

题目一 代码 import java.util.*;public class Main {public static void main(String[] args){Scanner inputnew Scanner(System.in);String strinput.nextLine();//nextLine()方法遇到回车结束输入&#xff0c;next()遇到空格int[]anew int[10];//用来计数a[0]-1;for(int i0…

Java复习01 集合概念

Java复习01 集合 在Java中&#xff0c;集合&#xff08;Collections&#xff09;是一种用来存储一组对象的结构。想象一下有一个装东西的箱子&#xff0c;这个箱子可以装很多不同类型的东西&#xff0c;例如书、DVD或者玩具。Java的集合也是这样&#xff0c;但是它专门用来装载…

更安全的C gets()和str* 以及fgets和strcspn的用法

#include <stdio.h>int main() {char *str;gets(str);puts(str);return(0); }可以说全是错误 首先char *str没有指向一个分配好的地址&#xff0c;就直接读入&#xff0c;危险 ps: 怎么理解char *str "Hello World" 是将一个存储在一个只读的数据段中字符串常…

java算法第25天 | ● 216.组合总和III ● 17.电话号码的字母组合

这两道题都是基于回溯的基本问题。 216.组合总和III 这道题是77.组合问题的变体&#xff0c;只不过终止条件多了一个和等于n。 class Solution {List<List<Integer>> resnew ArrayList<>();List<Integer> pathnew ArrayList<>();public List&l…

c++算法学习笔记 (8) 树与图部分

1.树与图的存储 &#xff08;1&#xff09;邻接矩阵 &#xff08;2&#xff09;邻接表 // 链式前向星模板&#xff08;数组模拟&#xff09; #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N 100010, M …

ABC345(A-C)

A - Leftrightarrow(100 points) 语法题&#xff0c;输入一个字符串&#xff0c;判断是否是&#xff1a;的样式&#xff0c;输入后只需判断是第一个和最后一个字符是否分别为">"和"<",再判断中间是否都是""即可。 #include<bits/stdc…

pta上的几个例题

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

双向SSM: Vision Mamba Encoder

文章目录 Vision Mamba Encoder初始化输入映射序列变换参数映射BC参数映射delta参数映射 SSM参数初始化A , D矩阵初始化delta参数初始化 双向SSM初始化参数初始化 前向输入映射fast_pathuse_fast_pathno use_fast_path 双向SSMv1前向后向 v2前向后向 Vision Mamba Encoder Vis…

解决游戏程序一运行就退出的问题

正文&#xff1a; 在游戏开发过程中&#xff0c;我们可能会遇到程序一运行就立即退出的情况。这种情况通常是由于程序中的某些逻辑错误或初始化问题导致的。 下面我们将分析可能的原因&#xff0c;并提供一些解决方案。 目录 正文&#xff1a; 原因分析&#xff1a; 解决方案…