接口测试工具Postman学习之常用断言

news2024/11/17 1:42:17

目录

什么是断言?

Postman常见断言方法介绍:

总结:


什么是断言?

断言——就是结果中的特定属性或值与预期做对比,如果一致,则用例通过,如果不一致,断言失败,用例失败。断言,是一个完整测试用例所不可或缺的一部分,没有断言的测试用例仅仅是测试步骤。​

在介绍Postman断言之前,我们先测试接口:

接口地址:

使用 GET 方法:

 那么这个接口我们如何用Postman来进行断言呢?也很简单,用到Postman tests 这个模块。

 要执行断言脚本以验证请求返回的数据,使用pm.test函数定义断言,他提供一个名称和函数,该函数返回一个布尔值(true或false)来指示测试是通过还是失败。并结合使用pm.response对象和pm.expect来测试响应详细信息。

那么上面的接口我们如何断言呢?很简单,从响应内容做断言。

比如我们可以断言 id=90,url = "https://www.v2ex.com/go/python",响应状态码等于200

我们在tests输入框填写:

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

var jsonData = JSON.parse(responseBody);
tests["Check respose id value"] = jsonData.id === 90; //断言id是90
tests["Check respose url value"] = jsonData.url === "https://www.v2ex.com/go/python"; //断言url

postman接口测试视频教程:2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV16L41117wB/?spm_id_from=333.999.0.0

 

操作步骤:1、填写断言 2、点击send

 查看断言结果:

 图中,Test Results(3/3)表示3条断言都执行成功

错误:运行报错 There was an error in evaluating the Pre-request Script: pm is not defined

解决办法:出现此问题是在使用Chrome的应用程序时,安装完整的独立版本后,pm对象可以正常工作。(安装包官网下载地址:https://www.postman.com/downloads/)

当然上面断言是比较简单的断言,如果返回的数据如下所示,我们应该如何断言呢?

{
"status": 1,
"message": "success",
"data": [
    {
    "id": 1,
    "title": "乡愁",
    "author": "余光中",
    "content": "小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。长大后,乡愁是一张窄窄的船票,我在这头,新娘在那头"
    },
    {
    "id": 5,
    "title": "乡愁",
    "author": "余光中",
    "content": "小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。长大后,乡愁是一张窄窄的船票,我在这头,新娘在那头"
    }
]
}

跟上面断言不同的是,data里面可能有多个json格式的数据,如果我们想断言data里面第一个json应该如何断言呢?其实也非常简单,我们在tests输入框填写:

var jsonData = JSON.parse(responseBody);
tests["Check respose status value"] = jsonData.status === 1;
pm.test("判断data里面第一个json数据的id为1", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data[0].id).to.eql(1);});

 

Postman常见断言方法介绍:

设置一个环境变量

pm.environment.set("variable_key", "variable_value");

将嵌套对象设置为环境变量

var array = [1, 2, 3, 4];
pm.environment.set("array", JSON.stringify(array, null, 2));

var obj = { a: [1, 2, 3, 4], b: { c: 'val' } };
pm.environment.set("obj", JSON.stringify(obj));

获取环境变量

//variable_key代表某一变量名,下同
pm.environment.get("variable_key");

获取一个环境变量(其值是一个字符串化的对象)

// These statements should be wrapped in a try-catch block if the data is coming from an unknown source.

var array = JSON.parse(pm.environment.get("array"));
var obj = JSON.parse(pm.environment.get("obj"));

清除一个环境变量

pm.environment.unset("variable_key");

 postman接口测试视频教程:2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV16L41117wB/?spm_id_from=333.999.0.0

 

设置一个全局变量

//variable_value为设置变量的值
pm.globals.set("variable_key", "variable_value");

获取一个全局变量

pm.globals.get("variable_key");

清除全局变量

pm.globals.unset("variable_key");

获取一个变量

该函数在全局变量和活动环境中搜索变量。

pm.variables.get("variable_key");

检查响应主体是否包含字符串

//string_you_want_to_search为需要匹配的字符串
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

检查响应主体是否等于一个字符串

//response_body_string 为需要匹配的响应主体
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

检查JSON值

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.key).to.eql(100); //key为返回json一字段名,如开头接口的 stars
});

内容类型存在

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

响应时间小于200ms

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

响应状态码是200

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

代码名称包含一个字符串

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

成功的POST请求状态码

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

对于JSON数据使用TinyValidator

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;
});

解码base64编码的数据

var intermediate,
    base64Content, // 假设它有一个base64编码值
    rawContent = base64Content.slice('data:application/octet-stream;base64,'.length);

intermediate = CryptoJS.enc.Base64.parse(base64content); // CryptoJS 是一个内置对象, 文档说明: https://www.npmjs.com/package/crypto-js
pm.test('Contents are valid', function() {
  pm.expect(CryptoJS.enc.Utf8.stringify(intermediate)).to.be.true; //非空检查
});

发送异步请求

该功能既可以作为预先请求,也可以作为测试脚本使用。

pm.sendRequest("https://postman-echo.com/get", function (err, response) {
    console.log(response.json());
});

将XML正文转换为JSON对象

var jsonObject = xml2Json(responseBody);

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方链接加入群聊免费领取,群里还有大佬帮忙解答问题,千万不要错过哦。

                                                       

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

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

相关文章

Java实训日志02

文章目录 八、项目开发实现步骤(二)创建项目1、创建Java项目2、创建目录,添加素材(1)创建help目录添加帮助文档(2)创建images目录添加图像素材(3)创建lib目录添加数据库驱…

直播预告 | 博睿学院:AIOps利器-混沌工程实践

混沌工程是通过应用一些经验探索的原则,来学习观察系统是如何反应的。应用混沌工程可以对系统抵抗扰动并保持正常运作的能力(稳定性)进行校验和评估,提前识别未知隐患并进行修复,进而保障系统更好地抵御生产环境中的失…

window Cmake开发环境搭建

背景 最近的项目需要从linux转战至Windows。因为之前的项目都是在linux环境下开发的,代码也是通过CMAKE编译。攻欲善其事,必先利其器。首先要考虑的是如何在Windows环境下使用cmake编译代码。 另外一个就是IDE的选择了,相比于动辄 好几个G的…

小程序中半屏打开其他小程序,开发者工具调试半屏

前言: 有需要是在当前小程序中,点击操作时,如果他没有注册会员,则强制去另一个小程序去注册会员,注册成功在返回,在这期间,打开另一个小程序是半屏来展示的。 实现效果: 在a小程序中…

Python七彩花朵

目录 前言 小海龟 花朵类 移动函数 画花朵 尾声 前言 来啦来啦来啦,小伙伴们快快来领取七彩花瓣雨吧!! 小海龟 老生常谈啦,在用python画樱花树前,我们先来了解一下turtle吧! 小海龟(Turtle)是P…

19c ASM命令

发现19c和11g有些asm命令参数不完全一致,这里记录下,持续更新 ###kfod命令 查看asm磁盘 #kfod disksall 查看asm磁盘组 #kfod opgroups 特定diskgroup情况 #kfod statustrue gdata 查看磁盘与磁盘组的对应关系# kfod disksall groupdiskgroup ds…

JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

问题背景: 将服务注册到多个Eureka出现有点的服务只注册到一个Eureka有点的服务可以注册到多个Eureka的问题,有的注册不上,报错:registration status: 204 Eureka界面: Eureka1: Eureka2: 从…

是德DSOX3014T MSOX3014T数字逻辑示波器

概述: keysight是德DSOX3014T MSOX3014T数字逻辑示波器8.5 英寸电容触摸屏让操作和归档变得更加简单,可以加速您的测试,独有的区域触控触发技术支持您在几秒钟内轻松隔离信号,独有的区域触控触发技术支持您在几秒钟内轻松隔…

Java Swing界面 示例代码+效果

1.Swing 轻量级组件,由java编写 2.常用窗口 2.1 JFrame JFrame是一个容器,是一个顶层窗口 常用方法: setSize(int width, int height); setLocation(int x, int y);//窗口距离屏幕左上角位置,默认(0,0…

进行兼容性测试需要注意什么?

兼容性测试是一项非常重要的软件测试过程,它确保软件能够在各种不同的操作系统、浏览器和设备上正常运行,那进行兼容性测试需要注意什么? 1、确定测试范围 在进行兼容性测试之前,首先需要确定测试的范围。这包括要测试的操作系统、…

我收集的一些与学习相关的自用网站

目录 前言 一、学习教程网站 廖雪峰的官方网站 菜鸟教程网站 W3school网站 BEJSON校验网站 C语言中文网站 码农教程网站 JavaScript中文网站 CSS参考网站 Htmlcheatsheet 网站 练习CSS选择器网站 练习CSS Fiex网站 css自动生成流行布局和模式的集合的网站 交互式…

单例模式(三)

过气的,终究是过气了 上一章简单介绍了 UML 类图(二), 如果没有看过,请观看上一章 一. 单例模式 所谓的单例设计模式,就是采用一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实…

Jmeter之单接口的性能测试

目录 前言: 性能指标 测试工具选择 Jmeter 获取性能指标 编辑接口信息 设置监听器 开始监控 收集监控数据 数据指标分析 总结: 前言: 服务端的整体性能测试是一个非常复杂的概念,包含生成虚拟用户,模拟并发&a…

Centos7 离线安装gcc gcc-

方法一:centos7 挂载本地iso yum源 cd /etc/yum.repos.d/ vim ios.repo [ios] nameios baseurlfile:///mnt/cdrom enable1 gpgcheck0 #镜像挂载本地 mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom/ yum clean all yum makecache yum -y install gcc g…

助力工业智能生产质检,基于yolov5n/s/m不同精度系列模型开发构建热轧钢缺陷检测识别系统,对比分析性能差异

缺陷先关的智能检测应用和深度学习的结合是具有非常不错的应用前景的,比如:PCB缺陷检测、布匹瑕疵缺陷检测、瓷砖缺陷检测等等,在我之前的博文中对于缺陷领域相关的实践也有不少的项目开发实践,感性却的话可以自行移步阅读即可。 …

后端学vue2

工程创建 安装vue脚手架 安装好nodejs之后,安装vue脚手架 npm install -g vue/cli-g 参数表示全局安装,这样在任意目录都可以使用 vue 脚本创建项目安装时候使用vue ui 创建 安装 vue调试工具devtools devtools 插件网址:https://devtoo…

软件测试05:软件测试分类

软件测试05:软件测试分类 软件测试分类 按照开发阶段划分 单元测试 单元测试又称模型测试,是针对软件设计的最小单位——程序进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求…

华为参战!国产之光盘古大模型推:盘古Chat

盘古Chat是华为基于盘古大模型开发的一款多模态千亿级大模型产品,可以支持多种自然语言理解和生成的任务,如文本生成、问答、翻译、对话等。它是直接对标目前比较火爆的ChatGPT的产品,被认为是新一代的国产“AI”王炸。 盘古Chat预计将于今…

HTML5+CSS3+Vue小实例:仿制B站PC端首页的吃豆人轮播图

实例:仿制B站PC端首页的吃豆人轮播图 技术栈:HTML+CSS+Vue.js 字体图标库:font-awesome 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><…

功率放大器如何驱动水声声呐捕鱼?

第十五个“世界海洋日”&#xff0c;我们除了聚焦如何更好地保护海洋环境&#xff0c;对于海洋资源的可持续性利用&#xff0c;如何让“海洋宝藏”更好地造福人类&#xff0c;也是一个重要课题。想要发现更多的渔业资源&#xff0c;有项技术必不可少&#xff0c;那就是声呐技术…