postman在软件测试中的应用

postman工具概述

Postman 是一款功能强大的 API 开发和测试工具,在软件开发和测试领域应用广泛。开发阶段,可以通过工具进行mock数据测试,方便开发,联调;测试阶段,可以通过不同环境,不同数据进行接口测试和数据构造;回归阶段,可以通过场景自动化的方式进行接口串联测试,通过定时任务的方式生成测试报告等。
在这里插入图片描述

postman如何进行场景化接口自动化

在这里插入图片描述

postman数据处理

经常我们在接口测试过程中遇到以下问题:

测试/生产只是域名不同、token不一样,每次都需要写两个接口?或者说是改url,如果接口较多的情况下,如何快速处理呢?—如何做到一套接口多环境使用

postman可不可以连接数据库-进行一些获参和断言呢?

接口传参的时候,不同情况下,我要写多个case,就是多条用例,我能不能在一个接口里,通过条件判断,什么情况传什么参数呢?

我一个接口返回多组数据,我需要怎么遍历获取他们呢,再对他们进行处理呢?

接口传参中,有些值我想自定义随机生成或者按照一定规律生成,如何去生成呢?

我需要大量不同的数据时,或者说我需要批量修改/创建一些数据,如何去生成呢?

那么针对以上这些问题,postman工具应该怎么处理呢?
引入变量

postman变量类型

本地变量(Local Variable)

本地变量主要是针对单个url请求设置的变量,作用域只是局限在请求范围内。

//设置本地变量
pm.variables.set("key","value");

正常接口参数:
在这里插入图片描述
引用变量设置:
在这里插入图片描述

全局变量(Global Variable)

全局变量是指在所有的环境里面,变量值都是一样的,全局变量的作用域是所有请求。

//设置全局变量
pm.globals.set("key","value")
注意:当环境变量和全局变量名称一样时,切换到某个环境时,环境变量会覆盖全局变量

在这里插入图片描述设置方式:
在这里插入图片描述

环境变量(Environment Variable)

环境变量指在不同环境,同一个变量值随着环境不同而变化。

//变量的引用格式为
{{varname}}

一个Java Script执行环境,可以通过JS脚本来编写Pre-request Script和Test Script。

Pre-request Script(预置脚本):可以用来修改一些默认参数,在请求发送之前执行;

Test Script(测试脚本):当接收到响应之后,再执行测试脚本
在这里插入图片描述
在这里插入图片描述

数据变量(Data Variable)

数据变量是通过导入外部数据文件(json文件或者csv文件),来获取变量数据。
在这里插入图片描述

数据处理方式

获取对应所需参数方法

接口返回值—获取所需参数
数据库查询—获取所需参数(xmysql)
Mock数据—构造所需参数

在这里插入图片描述

获取返回值信息

//获取返回的响应值然后转为json格式var jsonData=pm.response.json();
//获取接口返回的值tg_order_id=jsonData["data"][0]["order_id"]或bpid=json.data.bpid
//控制台日志查看console.log(tg_order_id);
//将获取的变量设置全局变量  pm.globals.set("tg_order_id",tg_order_id);

在这里插入图片描述

postman连接数据库

1、安装nodejs
2、安裝xmysql
3、连接数据库( xmysql -h test-XXX-af01.db.58dns.org -o 53200 -u 用户名 -p 密码 -d 数据库名)
(-h 输入连接数据库地址;-u -p 是要连接的数据库用户名密码;-d 是要连接的数据库中库名 )
4、获取数据库相关信息
在postman中通过 http://localhost:XXXX/api/ 访问 xmysql 自动生成的 Rest API

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

postman获取数据库信息常用操作语句

官方详细文档:https://github.com/o1lab/xmysql#api-overview

1、请求方式:
在这里插入图片描述2、基本的数据库操作:
在这里插入图片描述3、排序操作:
在这里插入图片描述使用案例:
在这里插入图片描述

js脚本编写

经常我们为了方便多个接口串联使用,会需要对postman接口返回的结果进行处理,然后方便接口数据进行串联,这里就离不开js脚本编写

js基本用法

1、js调试
console.log() 
console.warn()
console.info()
2、js数据类型
6种数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、为空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)
查看数据类型(typeof)
使用 typeof 操作符来检测变量的数据类型。
注:如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 object。
3、js类型转换
var obj = JSON.parse(text);JSON 字符串转换为 JavaScript 对象)
javaScript 变量可以转换为新变量或其他数据类型:
通过使用 JavaScript 函数
Number() 转换为数字, String() 转换为字符串, Boolean() 转换为布尔值,Date() 日期转换为字符串。
通过 JavaScript 自身自动转换
当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。
自动转换为字符串:输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法:
4、JavaScript JSON
JSON 格式化后为 JavaScript 对象(JSON 格式在语法上与创建 JavaScript 对象代码是相同的)
JSON 数据 - 一个名称对应一个值/JSON 对象  /JSON 数组
JSON 字符串转换为 JavaScript 对象
JavaScript 值转换为 JSON 字符串

使用案例:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

js条件语句

在写代码时,总是需要为不同的决定来执行不同的动作。故可以在代码中使用条件语句来完成该任务
在 JavaScript 中,我们可使用以下条件语句:
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
if…else if…else 语句- 使用该语句来选择多个代码块之一来执行
switch 语句 - 使用该语句来选择多个代码块之一来执行

案例使用:
在这里插入图片描述

js循环

Js循环语句
希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。
JavaScript 支持不同类型的循环:
for - 循环代码块一定的次数
for/in - 循环遍历对象的属性
在这里插入图片描述希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。
JavaScript 支持不同类型的循环:
while - 当指定的条件为 true 时循环指定的代码块
do/while - 同样当指定的条件为 true 时循环指定的代码块
注意:忘记增加条件中所用变量的值,否则循环永远不会结束!
在这里插入图片描述

js函数和对象

js函数

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
JavaScript 函数语法:
函数就是包裹在花括号中的代码块,前面使用了关键词 function,当调用该函数时,会执行函数内的代码。
function functionname()
{
// 执行代码
}

调用带参数的函数
function myFunction(var1,var2){代码}
带有返回值的函数
function myFunction(){ var x=5; return x;}
在这里插入图片描述

JS对象

1、数字方法(Numbere对象)
在这里插入图片描述2、String对象
在这里插入图片描述在这里插入图片描述
在这里插入图片描述3、日期对象(Date对象)
在这里插入图片描述

在这里插入图片描述4、Math 对象
在这里插入图片描述

在这里插入图片描述
5、Array对象
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

postman断言&运行

1】校验接口响应的状态码
【2】检查从JSON响应中获取到某个字段,判断其是否与预期字段一致; 
【3】判断实际响应时间是否与低于预期时间
【4】检查响应信息中是否包含某些指定的字符串(pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }); )
【5】检查实际获取的响应体(即 Body 信息)与预期结果的响应体是否一致;(pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); }); )
【6】检查响应中的头域信息(Headers)是否与预期一致(pm.test("Content-Type is present 
", function () {pm.response.to.have.header("Content-Type"); }); )
【7】检查响应码是否与预期集合中的某个值一致(pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]); }); )
【8】检查响应信息中是否包含某个预期值(pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); }); )
【9】转化XML格式的响应成JSON对象  var jsonObject = xml2Json(responseBody); 

在这里插入图片描述

运行collection

数据data驱动测试
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

构建工作流

在使用Coolection Runner 时,集合中的请求执行顺序就是请求在Collection中的排列顺序。
如果需要执行依次执行1-5-2-3-4的请求则有2种方式:
1、需要手动调整顺序;
2、在Tests里指定下一个请求    postman.setNextRequest("requestname")

在这里插入图片描述

命令执行

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

newman测试报告

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

jenkins集成运行

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

总结

1、在自动化方面-postman -只能用于小规模,项目之间的自动化-不是很体系化,本地化偏重
2、生成测试报告-也不是很美观
3、针对测试多库时不友好-只能连接一个数据库–适用于数据库单一的需求测试

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

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

相关文章

电子电气架构 --- 安全相关内容汇总

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

探索Wiki:开源知识管理平台及其私有化部署

在如今的信息时代,企业和团队的知识管理变得愈发重要。如何有效地存储、整理、共享和协作,是提高团队效率和创新能力的关键因素之一。今天,我要为大家介绍一款非常有用的github上开源知识管理工具——Wiki,并分享它的私有化部署方…

一份完整的软件测试报告如何编写?

在软件开发的过程中,测试是必不可少的环节。然而,测试报告往往是最被忽视的部分。你是否也曾在忙碌的测试工作后,面对一份模糊不清的测试报告感到头疼?一份清晰、完整且结构合理的测试报告,能够帮助团队快速了解软件的…

OpenEuler22.03 LTS SP3 系统优化

OpenEuler22.03 LTS SP3 系统优化 1、关闭selinux setenforce 0 sed -i "s#SELINUXenforcing#SELINUXdisabled#g" /etc/selinux/config 2、禁用swap swapoff -a sed -ri s/.*swap.*/#&/ /etc/fstab 3、公有云机器,必须安全加固 (1&…

logback之自定义过滤器

logback有两种过滤器,一种是context中的过滤器叫TurboFilter,是一个全局的过滤器,会影响所有的日志记录。另一种是Appender中的过滤器,只对所在的append有效。两者大同小异,这里我们以Appender的过滤器为例。 &#x…

HackMyVM-Airbind靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Getshell 3、提权 使用ipv6绕过iptables 四、结论 一、测试环境 1、系统环境 渗透机:kali2021.1(192.168.101.127) 靶 机:debian(192.168.101.11…

前端,npm install安装依赖卡在sill idealTree buildDeps(设置淘宝依赖)

输入npm i后,一直卡在sill idealTree buildDeps,一动不动 cnpm可以安装成功,但使用cnpm不会生成package-lock.json文件 设置淘宝依赖,依然卡住,挂梯子也不行 解决方法: // 取消ssl验证 set strict-ssl …

FPGA、STM32、ESP32、RP2040等5大板卡,结合AI,更突出模拟+数字+控制+算法

板卡选择困难症了?如果你也想玩FPGA、STM32、ESP32、RP2040相关的板卡,不如看看以下几款板卡,如果正巧碰上能实现你想要做的项目呢~ 01 小脚丫FPGA STEP BaseBoard V4.0套件 STEP BaseBoard V4.0是第4代小脚丫FPGA扩展底板(点击了…

go项目zero框架中表字段日期设置的几种格式对比与实践

在 GoZero 框架中,日期字段的格式通常取决于你的应用场景以及所使用的数据库类型。在 GoZero 中,日期字段的设置方式一般有两种:通过 time.Time 类型和通过字符串(例如 string 或 int64)。每种方式有其适用的场景和优缺…

UE5动画蓝图

动画蓝图,混合空间,状态机,瞄准偏移,动画蒙太奇,动画混合,骨骼绑定,动画重定向,动画通知,Control Rig…… 虚幻动画模块是一个庞大的系统,大模块里又包含很多…

XIAO Esp32S3制作网络摄像头——1音频获取

1、功能介绍 本文主要是基于XIAO Esp32S3(Sense)做的一款网络摄像头,主要包含以下功能 1 音频获取/保存 2 视频获取/视频保存 3 行人检测/火焰检测/行人追踪(告警) 4 指定区域 5 摄像头旋转 。。。 本文主要实现第一步,音频获取,后续会陆续实现后面的功能,敬请期…

Windows安装了pnpm后无法在Vscode中使用

Windows安装了pnpm后无法在Vscode中使用 解决方法: 以管理员身份打开 PowerShell 并执行以下命令后输入Y回车即可。 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser之后就可以正常使用了

Leffa 虚拟试衣论文笔记

Leffa: Learning Flow Fields in Attention for Controllable Person Image Generation https://github.com/xuanandsix/awesome-virtual-try-on-note/tree/main/Leffa 打开链接查看详情,更多虚拟试穿论文持续更新。

qt5.15.2+visual studio2022 免安装版环境配置

1.环境准备 visual studio2022qt5.15.2(免安装版本) 2.环境配置 2.1 打开首选项 2.2 添加Qt版本 2.3 构建套件手动添加Qt 5.15.2(msvc2019_64)并配置如下 3.新建项目 问题1:qt creator 没有欢迎界面 解决办法&#…

手写顺序流程图组件

效果图 完整代码 <template><div><div class"container" :style"{ width: ${spacingX * (colNum - 1) itemWidth * colNum}px }"><divv-for"(item, i) in recordList":key"i"class"list-box":style&…

Spring Boot自定义中文Banner

Spring Boot自定义中文Banner在线生成工具 https://www.bootschool.net/https://www.bootschool.net/1.选择喜欢的复制 2.在resources文件下新建banner文件&#xff0c;粘贴即可 <_> ::::: …

SpringCloud源码-Ribbon

一、Spring定制化RestTemplate&#xff0c;预留出RestTemplate定制化扩展点 org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration 二、Ribbon定义RestTemplate Ribbon扩展点功能 org.springframework.cloud.netflix.ribbon.RibbonAutoConfiguratio…

风力涡轮机缺陷检测数据集,86.6%准确识别率,11921张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注

风力涡轮机缺陷检测数据集&#xff0c;86.6&#xff05;准确识别率&#xff0c;11921张图片&#xff0c;支持yolo&#xff0c;PASICAL VOC XML&#xff0c;COCO JSON格式的标注 数据集下载 yolov11&#xff1a; https://download.csdn.net/download/pbymw8iwm/90206849 yolov…

Vue 针对浏览器参数过长实现浏览器参数加密解密

1、首先安装crypto-js npm install crypto-js 1、在router/index.js中添加如下代码 在utils工具类添加如下 encryption.js源码 import CryptoJS from crypto-js import CryptoJSCore from crypto-js/core import AES from crypto-js/aes import ZeroPadding from crypto-js/…

Python脚本实现通过Vector VN1630A CAN盒子与ECU通信

1 安装 python-can 包 安装命令如下&#xff1a; pip install python-can安装完成后可用下面命令查看是否安装成功及版本。 pip show python-canName: python-can Version: 4.4.2 Summary: Controller Area Network interface module for Python Home-page: https://github.…