接口测试Day03-postman断言关联

news2024/12/27 5:22:05
  • 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 的值为 xxx
		value 能取值: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.coloradmin.cn/o/2266174.html

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

相关文章

01- 三自由度串联机械臂位置分析

三自由度串联机械臂如下图所示(d180mm,L1100mm,L280mm),利用改进DH法建模,坐标系如下所示: 利用改进DH法建模,该机器人的DH参数表如下所示: 对该机械臂进行位置分析&…

lxml 解析xml\html

from lxml import etree# XML文档示例 xml_doc """ <root><book><title>Python编程指南</title><author>张三</author></book><book><title>Python高级编程</title><author>李四</autho…

用Python写炸金花游戏

文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **计算每个玩家的牌型并找出赢家**9. **打印结果** 完整代码 以下游戏规则&#xff1a; 那…

基于 SpringBoot微信小程序的医院预约挂号系统

摘 要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;医院预约挂号系统当然不能排除在外。医院预约挂号系统是在实际应用和软件工程的开发原理之上&#xff0c;运用微信开发者、java语言以及…

高仿CSDN编辑器,前端博客模板

高仿CSDN编辑器纯前端模板&#xff0c;使用的js、html、vue、axios等技术&#xff0c;网络请求库已进行封装&#xff0c;可以按需调整界面,需要源码联系(4k左右)。 1.支持代码高亮 2.支持目录点击定位 3.支持文件上传、图片上传&#xff08;需要自己写后端接口&#xff09; 4.M…

【C++11】类型分类、引用折叠、完美转发

目录 一、类型分类 二、引用折叠 三、完美转发 一、类型分类 C11以后&#xff0c;进一步对类型进行了划分&#xff0c;右值被划分纯右值(pure value&#xff0c;简称prvalue)和将亡值 (expiring value&#xff0c;简称xvalue)。 纯右值是指那些字面值常量或求值结果相当于…

在线oj项目 Ubuntu安装vue/cil(vue脚手架)

参考:https://blog.csdn.net/weixin_66062303/article/details/129046198 笔记 参考:https://blog.csdn.net/m0_74352571/article/details/144076227 https://cli.vuejs.org/zh/guide/installation.html 确保nodejs已经安装 npm换源淘宝镜像&#xff08;可以不操作或者使用魔…

Python字符串及正则表达式(十一):正则表达式、使用re模块实现正则表达式操作

前言&#xff1a;在 Python 编程的广阔天地中&#xff0c;字符串处理无疑是一项基础而关键的技能。正则表达式&#xff0c;作为处理字符串的强大工具&#xff0c;以其灵活的模式匹配能力&#xff0c;在文本搜索、数据清洗、格式验证等领域发挥着不可替代的作用。本系列博客已经…

项目37:简易个人健身记录器 --- 《跟着小王学Python·新手》

项目37&#xff1a;简易个人健身记录器 — 《跟着小王学Python新手》 《跟着小王学Python》 是一套精心设计的Python学习教程&#xff0c;适合各个层次的学习者。本教程从基础语法入手&#xff0c;逐步深入到高级应用&#xff0c;以实例驱动的方式&#xff0c;帮助学习者逐步掌…

华为:数字化转型只有“起点”,没有“终点”

上个月&#xff0c;我收到了一位朋友的私信&#xff0c;他询问我是否有关于华为数字化转型的资料。幸运的是&#xff0c;我手头正好收藏了一些&#xff0c;于是我便分享给他。 然后在昨天&#xff0c;他又再次联系我&#xff0c;并感慨&#xff1a;“如果当初我在进行企业数字…

count(1)、count(_)与count(列名)的区别?

大家好&#xff0c;我是锋哥。今天分享关于【count(1)、count(_)与count(列名)的区别&#xff1f;】面试题。希望对大家有帮助&#xff1b; count(1)、count(_)与count(列名)的区别&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 SQL 中&#xff0c…

AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航

作者&#xff1a;Gengze Zhou, Yicong Hong, Qi Wu 单位&#xff1a;阿德莱德大学&#xff0c;澳大利亚国立大学 论文链接&#xff1a; NavGPT: Explicit Reasoning in Vision-and-Language Navigation with Large Language Models &#xff08;https://ojs.aaai.org/index.p…

Linux高级--2.4.1 网络概念(分层、TCP)

关于网络分层理解的难点 对于一般人&#xff08;不参与设计和维护网络协议栈的人&#xff09;来讲&#xff0c;物理层和应用层很容易理解&#xff0c;也很好记住。首先&#xff0c;物理层是看的到的网线、基站的实体。再者&#xff0c;应用层是用户自己参与编写的程序。 而那…

使用VSCode Debugger 调试 React项目

一般我们调试代码时&#xff0c;用的最多的应该就是console.log方式了&#xff0c;还有的是使用Chrome DevTools 通过在对应的 sourcemap代码位置打断点进行调试&#xff0c;除了上面两种方式外还有一种更好用的调试方式&#xff1a; VSCode Debugger。 VSCode Debugger可以直…

Redis-十大数据类型

Reids数据类型指的是value的类型&#xff0c;key都是字符串 redis-server:启动redis服务 redis-cli:进入redis交互式终端 常用的key的操作 redis的命令和参数不区分大小写 &#xff0c;key和value区分 查看当前库所有的key keys * 判断某个key是否存在 exists key 查看key是什…

Git--tag标签远程管理

目录 一、git 标签 tag管理 1.创建一个轻量级标签 2.创建一个带有附注的标签 3.删除标签 二、标签推送 1.再创建两个分支 2.把多个标签推送到远程 三、标签拉取 四、删除远程标签 1.命令 2.查看远程仓库&#xff0c;标签被删除 3.远程标签删除后本地标签不会消失&a…

通过nginx设置一个图片服务器,并使用 Nginx 作为反向代理

通过nginx设置一个图片服务器&#xff0c;并使用 Nginx 作为反向代理 安装nginx 首先需要去官网下载一个nginx&#xff0c;我这里下载了最新的稳定版本&#xff1a;nginx-1.26.2&#xff0c;下载下来是一个压缩包&#xff0c;解压之后就可以直接用了。 修改nginx的配置文件 …

第十六届“蓝桥杯”全国软件和信息技术专业人才大赛简介及资料大全

蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心主办的一项全国性竞赛&#xff0c;面向全国高校大学生&#xff0c;累计参赛院校超过1200余所&#xff0c;参赛人数达40万人&#xff0c;是我国极有影响力的高校IT类赛事。 “第十六届蓝桥杯全国软件和信息…

快速理解24种设计模式

简单工厂模式 建立产品接口类&#xff0c;规定好要实现方法。 建立工厂类&#xff0c;根据传入的参数&#xff0c;实例化所需的类&#xff0c;实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例&#xff0c;并提供一个访问他它的全局…

【山西长治】《长治市市直部门政务信息化建设项目预算编制规范和预算编制标准》(长财行[2022]25号)-省市费用标准解读系列32

《长治市市直部门政务信息化建设项目预算编制规范和预算编制标准(试行)》&#xff08;长财行[2022]25号&#xff09;于2022年8月1日开始试行&#xff0c;此标准由长治市财政局、长治市行政审批管理局编制&#xff0c;是对信息化建设项目预算管理的基本要求&#xff0c;主要适用…