当前位置: 首页 > news >正文

【Postman工具】

一.接口扫盲

1.什么是接口?

接口是系统之间数据交互的通道。拿小红到沙县点餐为例:小红想吃鸭腿饭。她要用什么语言来表达?跟谁表达?通过什么表达?按照生活习惯应该是:小红根据菜单对服务员用中文表达她想要一份鸭腿饭。这里中文作为小红和服务员的共同语言标准,菜单作为一个规范。迁移到浏览器和服务器上:浏览器和服务器通过http协议(中文)进行通信,通过接口规范文档(菜单)发送符合规定的报文才能得到响应服务。

2.接口测试的意义是什么?

接口测试可以理解为不借助前端,提前对后端接口进行测试,提早发现问题解决问题。

3.什么是接口测试?

接口测试用来校验响应数据与预期结果是否一致、逻辑依赖关系是否正确。(逻辑以来关系:比如退出登录以后再打开订单链接,是否会跳转到登录页面。)

4.什么是自动化接口测试?

自动化接口测试是使用工具和代码代替人工的测试方法,主要依赖断言。

5.接口测试从哪些方面入手?

单接口测试和多接口测试。

单接口测试分为正向测试(必填参数组合、必填+非必填组合)和反向测试(功能异常、数据异常、参数异常)。

多接口测试需要考虑业务场景,如登录后跳转页面。

6.接口测试与手工测试的不同?

手工测试时可以根据页面的功能按钮、输入框来进行测试,而接口测试没有输入框,可以利用抓包工具获取到对应的key,针对key所应对的value值进行测试。

7.接口测试用例怎么写?

单接口测试用例:以登录为例

多接口测试用例:以后台管理用户为例

登录->添加用户->查询->修改用户->查询->删除用户->查询

8.怎么界定RESTful风格的接口?

传统的接口测试只有post和get方法,且url不唯一。

RESTful风格的接口有四种方法:post增加、get查询、delete删除、put修改,且url唯一。

9.接口文档的作用?

帮助前端和后端工作人员进行工作对接。

帮助测试人员编写测试用例。

帮助新入职的员工快速接手项目。

10.f12抓包需要关注的内容

二.HTTP协议

HyperText Transfer Protocol超文本传输协议,是一种用于请求和响应的应用层协议。

协议特点:支持客户端服务器模式,简单快速,无连接无状态(B/S模式)

URL:Uniform Resource Locator 统一资源定位符,用来定位资源。

协议:http、https

域名:IP地址,可以定义到环境中的一台主机

端口号:在主机上定义到具体的应用。默认端口号被省略就跟随协议。

--mysql默认端口号:3306

--redis默认端口号:6379

--http协议默认端口:80

--https协议默认端口:443

资源路径:对应网页源代码或数据资源

--资源路径可以为空

--如果有查询参数,资源路径为?之前 / 之后的所有内容

--如果没有查询参数,资源路径就从端口号到结束

查询参数:传递参数给源代码,一定是k=v格式。

(一).HTTP请求

工具:fiddler进行抓包验证

特点:由客户端发送给服务器

格式:请求行、请求头、空行、请求体(get请求没有请求体)

请求行(请求方法、url、协议版本

作用:指定请求方法和请求资源

格式:请求方法(空格)url(空格)协议版本(\r\n)

请求方法:GET查询、POST新增(登录注册用)、PUT修改、DELETE删除

url:数据资源定位符,协议://域名:端口号/资源路径?查询参数&查询参数

请求头

作用:向服务器描述浏览器的基本信息

格式:全是key : value的键值对

要重点记住两个:

User-Agent:向服务器描述浏览器类型

Content-Type:向服务器描述请求体的数据类型

请求体

GET、DELETE没有请求体

PUT、POST有请求体

请求体的数据类型,收请求头中Content-Type的值的影响

复习:

这个是fiddler抓包抓到的请求报文

1是请求行:请求方法是POST,url中http是协议类型,://是协议与域名的分割符,/是域名和资源路径的分割符,HTTP/1.1是协议版本号。

2-16是请求头:其中User-Agent是浏览器的类型,Content-Type是请求体的数据类型:表单类型

17是空行

18是请求体

(二).HTTP响应

特点:服务器发给浏览器(客户端)

格式:响应行、响应头、空行、响应体

响应行

格式:协议版本(空格)状态码(空格)状态码描述\r\n

协议版本:http1.0/ http1.1 / http2.0

状态码:

1xx:信息向

2xx:表成功

3xx:重定向

4xx:客户端错误。404表示数据资源不存在,403表示数据资源拒绝被访问

5xx:服务端错误。

状态描述:比如200ok,404Not Found,403Forbidden

响应头

作用:向客户端描述服务器的信息

语法:k : v键值对

Content-Type:向客户端描述响应体的数据类型

响应体

http报文响应,大多数都有响应体

数据类型受响应头中的Content-Type值影响,常见的类型:json/表单类型/图片类型

三.使用postman进行接口测试

postman是接口调试工具

newman插件可以自动生成测试报告

npm -v 检查是否安装了node.js

npm install -g newman 安装newman

newman -v 检查是否安装成功

npm install -g newman-reporter-html 最后一步

(一).基础使用

1.使用postman发送http请求,访问京东网站上”搜索“功能

2.使用postman向网易邮箱的登录接口发送一个密码错误的登录请求。

(二).管理测试用例collections

(三).导入导出用例

(三).断言

使用postman自带的断言机制,判断响应结果与预期是否一致。

1.断言响应状态码:Status code is 200

pm:postman的一个实例

test():postman的一个实例方法,有两个参数:

①“Status code is 200”,断言完成后的提示信息,可修改。

② function () { pm.response.to.have.status(200);}是匿名函数调用,意思是pm的响应状态有一个码值为200。

2.断言响应体是否包含某个字符串:Response body: Contains string

pm.test("Body matches string", function () {

pm.expect(pm.response.text()).to.include("string_you_want_to_search");

});

3.断言响应体是否等于某个字符串:Response body: ls equal to a string

4.断言json数据:Response body: JSON value check

pm.test("Your test name", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.value).to.eql(100);

});

分析:

var jsonData = pm.response.json();定义一个变量jsonData ,值为json格式的响应体数据

pm.expect(jsonData.value).to.eql(100);pm预期响应结果中xxx(key)的值为xxx

value可替换为:success、code、message、data

to.eql()中的值对应为预期结果:true、"操作成功”...

5.断言响应头:Response headers: Content-Type

四.全局变量和环境变量

全局变量

概念:在postman全局唯一且不可以重复的变量。

设置:pm.globals.set("var_name", value);

获取:

①请求参数(页面)中获取{{var_name}},用来查询参数、请求头、请求体中

②代码中获取:var value = pm.globals.get("var_name");

举例:

var age_tmp = 18;

pm.globals.set("glb_age",age_tmp);

var ret_age = pm.globals.get("glb_age")

环境变量

概念:某个环境中变量不可重复定义,常见的有开发环境、测试环境、生产环境。

设置:pm.environment.set("var_name", value);

获取:

①请求参数(页面)中获取{{var_name}}

②代码中获取:var value = pm.environment.get("var_name");

五.postman请求的前置脚本

1.时间戳

概念:表示当前系统时间。从1970年1月1日00:00:00-现在所经历的秒数

2.请求前置脚本

postman可以在http请求发送之前会自动执行该脚本中的代码,以准备请求发送前的环境和数据。

案例:调用百度首页接口,传时间戳给服务器

步骤:

1.创建“请求前置脚本”用例集和http请求页

2.指定请求方法为GET,百度网址http://www.baidu.com

3.在"Pre-request Script"标签页中写入代码,获取时间戳,写入到全局变量中

4.点击"send"按钮,使"Pre-request Script"标签页中的代码被自动执行,点击小眼睛图标,会发现多出一个全局变量。

5.在URL中借助请求参数使用全局变量。点击发送按钮,发送带有时间戳的请求。

6.点击菜单栏中view->ShowPostman Console中查看

六.postman关联

1.介绍:postman关联可以借助全局变量或环境变量来解决接口和接口之间的依赖问题。

2.实现步骤:

以A接口返回的数据供B接口使用为例

①.组织A接口http请求数据,发送A接口的请求

②.将A接口返回的响应数据存到全局/环境变量中

③.组织B接口http发送数据,从全局/环境变量中获取A接口返回的数据

3.案例:请求查询手机号接口,提取结果中返回的城市,将城市名给百度搜索接口使用。

①.查询手机号的页面以及url:https://api.wetools.com/tool/phoneNumber

②组织A接口http请求数据,发送A接口的请求

//获取响应数据
var jsonData = pm.response.json()
//获取城市名
var city = jsonData.data.detail["所属地区"]
//写入全局变量
pm.globals.set("glb_city", city)

③B接口获取到全局变量城市名,在百度中进行搜索

4.批量执行用例集

iterations:指定迭代次数(执行几次)

delay:用例执行延迟时间

data:导入外部数据文件,实现“参数化”

七.postman测试报告

步骤:

1.先把测试用例集导出

2.在用例集所在目录打开cmd,使用newman生成测试报告的完整命令:

newman run 测试用例集名.json -e 环境变量文件 -d 数据文件 -r html -- reporter-html-export 测试报告名称.html

ps: -e 环境变量文件 -d 数据文件,如果没有可省略

ps:可以复制路径到postman中

①:右键复制路径,选择bash

② 导入到postman中

相关文章:

【Postman工具】

一.接口扫盲 1.什么是接口? 接口是系统之间数据交互的通道。拿小红到沙县点餐为例:小红想吃鸭腿饭。她要用什么语言来表达?跟谁表达?通过什么表达?按照生活习惯应该是:小红根据菜单对服务员用中文表达她想要…...

全网超详细攻略-从入门到精通haproxy七层代理

目录 一.haproxy概述 1.1 haproxy简介 1.2 haproxy的主要特性 1.3 haproxy的优缺点 二.负载均衡介绍 2.1 什么是负载均衡 2.2 为什么用负载均衡 2.3 负载均衡类型 2.3.1 四层负载均衡 2.3.2 七层负载均衡 2.3.3 四层和七层的区别 三.haproxy的安装及服务 3.1 实验环…...

AI编程辅助工具:CodeGeeX 插件使用

CodeGeeX 插件使用 前言1.支持的平台2.安装步骤3.启用插件4.代码生成5.代码优化 前言 CodeGeeX 是一款基于 AI 技术的编程助手插件,旨在帮助开发者提高编程效率和代码质量。它能够智能生成代码、优化现有代码、自动生成文档以及回答编程相关的问题。无论您是初学者…...

sql注入实战——thinkPHP

sql注入实战——thinkPHP sql注入实战——thinkPHPthinkPHP前期环境搭建创建数据库开始寻找漏洞点输入SQL注入语句漏洞分析 实验错误 sql注入实战——thinkPHP thinkPHP前期环境搭建 下载thinkPHP文件 解压,将framework关键文件放到think-5.0.15中,改…...

MySQL 迁移 OceanBase 的 Oracle模式中,实现自增主键的方法

本文作者:赵黎明,爱可生 MySQL DBA 团队成员,熟练掌握Oracle、MySQL等数据库系统,擅长对数据库性能问题的诊断,以及事务与锁机制的分析等。负责解决客户在MySQL及爱可生自主研发的DMP平台日常运维中所遇到的各种问题&a…...

【C++ 面试 - 基础题】每日 3 题(十一)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...

ESP8266在线升级OTA固件

OTA的基本实现方式: ESP8266 的 OTA 实现有几种方式,常用的方式包括: 1、Arduino OTA:使用Arduino IDE提供的OTA功能,可以直接通过Arduino IDE上传固件到ESP8266。 2、Web OTA:ESP8266运行一个简易的Web服…...

精通C++ STL(六):list的模拟实现

目录 类及其成员函数接口总览 结点类的模拟实现 构造函数 迭代器类的模拟实现 迭代器类存在的意义 迭代器类的模板参数说明 构造函数 运算符的重载 --运算符的重载 运算符的重载 !运算符的重载 *运算符的重载 ->运算符的重载 list的模拟实现 默认成员函数 构造函数 拷贝…...

《雅思口语真经总纲1.0》话题实战训练笔记part1——6. Music

《雅思口语真经总纲1.0》笔记——第四章:口语素材大全(part1、part2、part3回答准则及练习方法,不包括范例答案)★★★★★ 文章目录 MusicWhen do you listen to music?20240804答评价注意事项1、在说到“no music”时&#xff…...

Python之赋值语句(多重赋值和交换赋值)

这是《Python入门经典以解决计算问题为导向的Python编程实践》73-74页关于赋值的内容。讲了Python中几种赋值方式。 赋值语句 1、最简单的赋值:ab2、多重赋值:a,b,c1,2,33、交换:a,bb,a 1、最简单的赋值:ab b可以是数字、字符串…...

网络协议七 应用层 HTTP 协议

应用层常见的协议 HTTP协议 1. 如何查看我们的http 协议全部的内容有哪些呢? 一种合理的方法是 通过 wireshark 软件,找到想要查看的HTTP --->追踪流--->HTTP流 来查看 结果如下:红色部分 为 发送给服务器的,蓝色部分为服务…...

uniapp vue 在适配百度小程序平台动态:style

uniapp vue 在适配百度小程序平台动态:style踩坑报错Unexpected string concatenation of literals 抖快平台动态style写法基本是 <view :style"{width: 686rpx, height: (setHeight 96) rpx}"> </view>这种写法在百度上会又解析报错&#xff1a; Une…...

【最小生成树】(二) Kruskal 算法

题目: 寻宝 题目描述 在世界的某个区域&#xff0c;有一些分散的神秘岛屿&#xff0c;每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路&#xff0c;方便运输。 不同岛屿之间&#xff0c;路途距离不同&#xff0c;国王希望你可以规划建公路的方案&#xf…...

haproxy最强攻略

1、负载均衡 负载均衡&#xff08;Load Balance&#xff0c;简称 LB&#xff09;是高并发、高可用系统必不可少的关键组件&#xff0c;目标是 尽力将网络流量平均分发到多个服务器上&#xff0c;以提高系统整体的响应速度和可用性。 负载均衡的主要作用如下&#xff1a; 高并发…...

XetHub 加入 Hugging Face!

我们非常激动地正式宣布&#xff0c;Hugging Face 已收购 XetHub &#x1f525; XetHub 是一家位于西雅图的公司&#xff0c;由 Yucheng Low、Ajit Banerjee 和 Rajat Arya 创立&#xff0c;他们之前在 Apple 工作&#xff0c;构建和扩展了 Apple 的内部机器学习基础设施。XetH…...

在编程学习的海洋中,如何打造高效的知识宝库

目录 在编程学习的海洋中&#xff0c;如何打造高效的知识宝库一、笔记记录的重要性&#xff1a;为知识设立灯塔二、快速记录的策略&#xff1a;抓住知识的核心三、系统化的整理&#xff1a;构建个人知识体系四、实用工具推荐&#xff1a;为知识管理添砖加瓦五、保持条理性的秘诀…...

string详解(1)

1.C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需要用户自己管理&…...

Linux云计算 |【第二阶段】NETWORK-DAY4

主要内容&#xff1a; NAT 原理与配置&#xff08;私有IP地址、静态NAT转换、Easy IP&#xff09;、VRRP解析&#xff08;主路由器、备份路由器、虚拟路由器、优先级&#xff09; 一、NAT概述 NAT 网络地址转换&#xff08;Network Address Translation&#xff09;是一种网络…...

amazon linux使用密码登录或者root登陆

1. 首先要把创建root密码&#xff0c;如果原来的密码不记得了&#xff0c;可以直接用 sudo passwd -d root 删除原来的密码 然后创建root密码 sudo passwd root 2. 修改 sshd_config 文件 vim /etc/ssh/sshd_config 允许使用密码登录 PasswordAuthentication yes 允许root…...

集智书童 | CNN 与 Transformer 的强强联合:AResNet-ViT在图像分析中的优势 !

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;CNN 与 Transformer 的强强联合&#xff1a;AResNet-ViT在图像分析中的优势 &#xff01; 作者针对残差CNN分支的注意力引导设计进行了消融实验。同时&a…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...