接口测试Day03-postman断言关联

  • postman常用断言

注意:不需要手敲,点击自动生成生成

  • 断言响应状态码
    Status code:Code is 200
//断言响应状态码为 200
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});pm: postman的实例
test() : postman实例的测试方法,这个方法有两个参数。参数1:"Status code is 200",这个参数可以任意修改,不影响断言作用:在断言结束后,显示给用户,断言结果的提示文字。参数2: function () {pm.response.to.have.status(200);
},是一个匿名函数调用pm.response.to.have.status(200);的意思是:
postman的响应结果中,应该有响应状态码 200,------这里的200是 预期结果

在这里插入图片描述

  • 断言包函某字符串
    Response body: Contains string
//断言响应体包函指定字符串
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});pm:postman的实例。
test() postman实例的测试方法。 这个方法 有 2 个参数。参1:"Body matches string"。 这个参数可以任意修改,不影响 断言。作用:在断言结束后,显示给用户,断言结果的提示文字。参2:是一个 匿名函数 调用。pm.expect(pm.response.text()).to.include("string_you_want_to_search"); 的意思是:
postman 期望 响应文本中,应该包含 “你想搜索的字符串”(预期结果)

在这里插入图片描述

  • 断言json响应数据
    Response body: JSON value Check
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.value).to.eql(100);
});pm:postman的实例。
test() postman实例的测试方法。 这个方法 有 2 个参数。参1:"Body matches string"。 这个参数可以任意修改,不影响 断言。作用:在断言结束后,显示给用户,断言结果的提示文字。参2:是一个 匿名函数 调用。var jsonData = pm.response.json(); 将 整个 json响应体 赋值到 变量 jsonData 上。pm.expect(jsonData.value).to.eql(100); postman 期望 json结果中 指定key 的值为 xxxvalue 能取值:success、code、message

在这里插入图片描述
在这里插入图片描述

  • 响应数据是字典套列表格式{k:v,k:[v1,v2,v3]}
    在这里插入图片描述
    在这里插入图片描述
  • 响应json数据格式是[{},{}……]

在这里插入图片描述

var jsonData = pm.response.json();// 遍历JSON数组中的每个对象
// forEach 是数组的一个内置方法,用于对数组的每个元素执行一次提供的函数
jsonData.forEach(function(item, index) {// 对每个对象的courseName属性进行断言pm.test("Course name should be 'dh-tur正则' for item at index " + index, function() {pm.expect(item.courseName).to.eql("dh-tur正则");});// 如果还需要对嵌套在courses数组中的courseName进行断言item.courses.forEach(function(course, courseIndex) {pm.test("Nested course name should be 'dh-tur正则' for course at index " + courseIndex + " in item at index " + index, function() {pm.expect(course.courseName).to.eql("dh-tur正则");});});
});
  • Postman 断言工作原理

在这里插入图片描述

  • postman 关联
  • 简介
    当接口和接口之间,有依赖关系时,需要借助 postman 关联技术,来实现。
    如: 登录接口 返回的 令牌数据,被 添加员工接口依赖。
    添加员工接口 返回 员工id,被 查询员工接口依赖。
  • 实现步骤
    假定:接口B 产生的数据,被 接口A 依赖。
  1. 发送 接口B 请求,获取响应数据。
  2. 将 响应数据,放入公共容器(全局变量、环境变量)中
  3. 接口A 从 公共容器中,提取数据,发送请求。
    在这里插入图片描述
  • 核心代码
//1、获取响应数据,转为 json格式,保存到变量中
var jsonData = pm.response.json()//2.1、使用 全局变量做容器
pm.global.set("全局变量名",全局变量值)
//2.2、使用 环境变量做容器
pm.environment.set("环境变量名", 环境变量值)//3、在postman 界面中(url、请求头headers、请求体body) 提取 全局/环境 变量数据
{{全局变量名}}/{{环境变量名}}
  • 创建环境
    全局变量:在 整个postman中都可以使用的变量。不需要 单独创建环境。
    环境变量:在 特定的环境下,才能使用的变量。需要给此变量创建单独的环境。

在这里插入图片描述
在这里插入图片描述

  • 案例一

1

  1. 使用 postman 关联,实现下面案例
    从获取天气接口,http://www.weather.com.cn/data/sk/101010100.html
    获取返回结果中的城市名称
    调用百度搜索接口: http://www.baidu.com/S?wd=北京 ,把获取到的城市名称,如:北京,作为请求参数
    思路:
  2. 发送 获取天气请求,获取响应结果
  3. 从响应结果中,拿到城市名,存入 全局变量
  4. 百度搜索接口从 全局变量中,取城市名,发送搜索请求。
    Tests 代码:
/ 1. 获取响应结果
var jsonData = pm.response.json()// 2. 从响应结果中,提取 城市名
var city = jsonData.weatherinfo.city// 3. 将城市名保存到 全局变量
pm.globals.set("glb_city", city)

在这里插入图片描述
在这里插入图片描述

  • 案例二
    使用 postman 关联技术,实现 添加员工 接口。
    登录成功,返回的 “令牌” 被 添加员工 接口依赖。
    思路:
  1. 发送登录请求(必须登录成功),获取响应结果
  2. 从 json 响应结果中,提取 data 值。拼接上 “Bearer ” 前缀。
    注意:Bearer单词不能拼错,首字母必须大写,只有一个空格
  3. 将拼接无误的 令牌,存入 环境变量。 从 “眼睛” 图标查看。
  4. 添加员工 接口,从 环境变量 中,提取 令牌。设置到请求头中,作为 Authorization 的 值。
  5. 填写 添加员工 接口 其他信息(post、URL、请求体),发送请求。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python vs PHP:哪种语言更适合网页抓取

本文将比较 Python 和 PHP,以帮助读者确定哪种语言更适合他们的需求。文章将探讨两种语言的优点和缺点,并根据读者的经验水平分析哪种语言可能更容易上手。接下来,文章将深入探讨哪种语言在抓取网页数据方面更胜一筹。 简而言之,…

五分钟学会如何在GitHub上自动化部署个人博客(hugo框架 + stack主题)

上一篇文章: 10分钟学会免费搭建个人博客(Hugo框架 stack主题) 前言 首先,想要实现这个功能的小伙伴需要完成几个前置条件: 有一个GitHub账号安装了git,并可以通过git推送commit到GitHub上完成第一篇文章…

开发过程中的AI插件推荐

在ChatGPT日渐火爆的当下,开发工具中的各种AI插件也日渐成熟,在开发过程中能给予我们很大的助力,并大幅节省研发时间和成本,所以学会学会使用AI目前已算是必不可少的技能了。 一. CodeGeex(智谱清言) CodeGeeX是智谱AI旗下一款基…

鸿蒙之路的坑

1、系统 Windows 10 家庭版不可用模拟器 对应的解决方案【坑】 升级系统版本 直接更改密钥可自动升级系统 密钥找对应系统的(例:windows 10专业版) 升级完之后要激活 坑1、升级完后事先创建好的模拟器还是无法启动 解决:删除模拟…

企业销售人员培训系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

C 实现植物大战僵尸(一)

C 实现植物大战僵尸(一) 对应资源链接,C语言项目:完整版植物大战僵尸 以下内容为个人实现版,与原 UP 主项目代码内容有出入,提高了些可读和简洁性 一 创建主场景 安装 easyx 库,easyx 官网 …

SQL创建和操纵表

本文介绍创建、更改和删除表的基本知识。 1. 创建表 SQL 不仅用于表数据操纵,而且还用来执行数据库和表的所有操作,包括表本身的创建和处理。一般有两种创建表的方法: 多数DBMS 都具有交互式创建和管理数据库表的工具;表也可以…

Java开发经验——数据库开发经验

摘要 本文主要介绍了Java开发中的数据库操作规范,包括数据库建表规范、索引规约、SQL规范和ORM规约。强调了在数据库设计和操作中应遵循的最佳实践,如字段命名、数据类型选择、索引创建、SQL语句编写和ORM映射,旨在提高数据库操作的性能和安…

NTLM 中继到 LDAP 结合 CVE-2019-1040 接管全域

目录 LDAP中继 LDAP签名 CVE-2019-1040 NTLM MIC 绕过漏洞 漏洞背景 漏洞利用链 利用方式 1:配置基于资源的约束委派-攻击域控 利用方式 2:攻击 Exchange Exchange windows permissions 组介绍 复现 LDAP中继 LDAP(轻量级目录访问协…

如何通过采购管理系统实现智能化采购?

随着人工智能、大数据等技术的快速发展,采购管理逐步迈入智能化时代。智能化采购不仅提升了效率,还为企业提供了更精准的采购决策支持。本文将从智能化采购的优势出发,探讨采购管理系统如何助力企业实现这一目标。 文中用到的采购管理系统&a…

STM32学习(一)

STM32是什么 STM32是意法半导体(ST)公司基于ARM Cortex-M内核开发的32位微控制器‌。他的名字是由;意大利SGS&法国Thomson共同研制的,中国人民取两家公司名称的首字母于是ST就是这样来的,M是单片机M-Micro Contro…

C# 读取多种CAN报文文件转换成统一格式数据,工具类:CanMsgRead

因为经常有读取CAN报文trace文件的需求,而且因为CAN卡不同、记录软件不同会导致CAN报文trace文件的格式都有差异。为了方便自己后续开发,我写了一个CanMsgRead工具类,只要提供CAN报文路径和CAN报文格式的选项即可将文件迅速读取转换为统一的C…

hiprint结合vue2项目实现静默打印详细使用步骤

代码地址是:vue-plugin-hiprint: hiprint for Vue2/Vue3 ⚡打印、打印设计、可视化设计器、报表设计、元素编辑、可视化打印编辑 本地安装包地址:electron-hiprint 发行版 - Gitee.com 1、先安装hipint安装包在本地 2、项目运行npm(socket.…

WPF+MVVM案例实战与特效(四十七)-实现一个路径绘图的自定义按钮控件

文章目录 1、案例效果2、创建自定义 PathButton 控件1、定义 PathButton 类2、设计样式与控件模板3、代码解释3、控件使用4、直接在 XAML 中绑定命令3、源代码获取4、总结1、案例效果 2、创建自定义 PathButton 控件 1、定义 PathButton 类 首先,我们需要创建一个新的类 Pat…

《传染病与人类历史》传染病如何推动人类历史进程

《传染病与人类历史》传染病如何推动人类历史进程 Epidemics: The Impact of Germs and Their Power Over Humanity Joshua S. Loomis(约书亚S卢米斯)美国,教授,微生物学家。主要教授微生物学、遗传学、免疫学、细胞生物学与传染病…

如何检查交叉编译器gcc工具链里是否有某个库(以zlib库和libpng库为例)

freetype 依赖于 libpng,libpng 又依赖于 zlib,所以我们应该:先编译 安装 zlib,再编译安装 libpng,最后编译安装 freetype。 但是,有些交叉编译器工具链里已经有 zlib库和freetype,所以我们需要…

MySql详细教程-从入门到进阶(超实用)

基础篇 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的数据进行增删改DQL: 数据查询语言,用来查询数据库中表的记录DCL: 数据控制语言,用…

Burp炮台实现(动态ip发包)

基本步骤 1.使用 zmap 爬取大量代理ip 2.使用py1脚本初步筛选可用ip 3.利用py2脚本再次筛选对目标网站可用ip(不带payload安全检测) 4.配置 burp 插件并加载收集到的代理池 5.加载payload,开始爆破 Zmap kali安装 sudo apt update apt …

海外招聘丨 苏黎世联邦理工学院—机器学习在社会和政治科学中的应用博士后

雇主简介 苏黎世联邦理工学院是世界领先的科技大学之一。我们以优质的教育、尖端的基础研究和将新知识直接转化为社会而闻名。来自 120 多个国家的 30,000 多名学生认为我们的大学是一个鼓励独立思考和激励卓越的环境的地方。 我们位于欧洲中心,但与世界各地建立联…

【微信小程序】3|首页搜索框 | 我的咖啡店-综合实训

首页-搜索框-跳转 引言 在微信小程序中,首页的搜索框是用户交互的重要入口。本文将通过“我的咖啡店”小程序的首页搜索框实现,详细介绍如何在微信小程序中创建和处理搜索框的交互。 1. 搜索函数实现 onClickInput函数在用户点击搜索框时触发&#x…