Postman接口测试: postman设置接口关联,实现参数化

news2025/1/11 7:48:38

postman设置接口关联

在实际的接口测试中,后一个接口经常需要用到前一个接口返回的结果, 从而让后一个接口能正常执行,这个过程的实现称为关联。

在postman中实现关联操作的步骤如下:

1、利用postman获取上一个接口指定的返回值,可以在tests中提取响应中的字典做全局变量;如下图

2、编写代码设置全局变量,会自动把全局变量的信息加入到Environments中的Globals中,如下图

使用postman全局变量保存上一个接口的值,代码如下:

老版本写法:postman.setGlobalVariable("全局变量名", str); 其中前面的参数为全局变量名称 ,后面为变量

新版本写法:pm.globals.set("token_id", token_value);其中前面的参数为全局变量名称 ,后面为变量

3、和之前引用全局变量一样,使用{{全局变量名}}即可;如下图

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

Postman接口测试保姆级教程及接口自动化测试项目实战教程你要的都在这

postman实现参数化

什么时候会用到参数化

比如:一个模块要用多组不同数据进行测试  == 验证业务的正确性

Login模块:正确的用户名,密码 ===成功;错误的用户名,正确的密码 === 失败

postman实现参数化

在实际的接口测试中,部分参数每次发送请求时都要唯一(比如注册), 这时可采用postman把测试数据进行参数化处理

postman设置参数的形式主要有三种:

  • 内建变量实现
  • Pre-request Script页签中使用代码实现 (推荐)
  • 外部文件的方式实现;如csv文件/json格式文件
一、内建变量实现

Postman有以下三种内建变量,适合一次性使用;缺点:内键变量不能做精确对比

{{$guid}}:生成GUID;如下图:

{{$timestamp}}:当前时间戳;如下图

可通过在线时间戳转换工具查看时间:https://tool.lu/timestamp/

{{$randomInt}}:0-1000的随机整数

二、Pre-request Script页签中使用代码实现(推荐)

Pre-request Script为执行接口请求之前要做的操作,而tests是执行完请求要 做的操作。内建变量一般放在Request里,我们也可以用代码在Pre-request Script中实现,用代码实现的好处是可以复用。

Pre-request Script 与test 一样 支持javascript语法

在Pre-request Script中实现的几种参数化;如下

//获取当前时间戳 毫秒
var now_time = Date.now()
pm.globals.set("now_time",now_time)

//guid实现
const guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
.replace(/x/g, () => (Math.floor(Math.random() * 16)).toString(16))
.replace(/y/g, () => (Math.floor(Math.random() * 4 + 8)).toString(16));
pm.globals.set("guid_value",guid)

//随机整数实现
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + 
min
pm.globals.set("randomInt_num",randomInt(8,15))

//从多个选项中选择实现
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + 
min
const getRandomValue = list => list[randomInt(0, list.length - 1)];
const charsInName = ['王','李','张']
pm.globals.set("people_name",getRandomValue(charsInName))


//随机手机号实现
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + 
min
var mobile_num = `18${randomInt(100000000, 999999999)}`;
pm.globals.set("mobile_num",mobile_num)

//同步等待实现:等待5秒后开始执行
const sleep = (milliseconds) => {
const start = Date.now();
while (Date.now() <= start + milliseconds) {}
}
sleep(5000)

实战示例:通过Pre-request Script编写代码可以在随机参数中做断言的精确比对

1、在Pre-request Script中编写代码

2、在请求中引用变量;{{变量名}}

3、在tests中做断言,验证实际结果和预期结果是否一致

4、查看执行结果

三、外部文件方式实现参数化

在postman中,除了上述两种方法实现参数化,还可以利用外部数据文件 (支持csv文件和包含json格式文本的数据)。外部数据文件目前是通过Runner 页签可以进行导入。

csv文件格式举例:

csv文件要在Collection Runner中工作,第一行必须是在request中要使用的 变量名,每一行是一条用例,并表示一次迭代。

1、先准备csv文件,编码是UTF-8;如上图

2、在postman中引用变量名,如下图中的百度搜索中wd的参数引入了{{search_word}},tests页签中做断言引用了data.expected_result

3、点击Runner按钮,勾选需执行的请求,在设置循环次数,导入csv文件,点击run执行;如下图

4、查看执行结果

json文件你需要确保你的文件有键/值对数组。数组中的每个元素是键值对对 象,代表一次迭代。key作为request中要使用的变量名,value作为key的取值。

json文件实现参数化步骤:

1、准备要使用的json格式测试数据文件;

2、在postman脚本中,HTTP requests中使用{{ key }}去引用,在script中使用 data. key 或者 data[“key”] 去引用;

3、打开Runner窗口,点击Data旁边的Select File按钮,导入jsondata参数化文件; 点击Data File Type类型选择application/json后,点击Preview按钮,检查数据正确

4、查看执行结果

Postman本篇总结

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

ICMP协议(一)

一 ICMP 说明&#xff1a; 了解大致内容即可,如果不是搞数通的只需要有个概念即可 小林 coding ① 概念 重点&#xff1a; ping、traceroute、mtr 主要是利用 ICMP 或者 UDP 的特性特点&#xff1a; ICMP 是TCP/IP协议簇的一个子协议,属于网络层 [三层]协议作用&#xff…

嵌入式开发常见的问题解决方法总结

本文引自 https://mp.weixin.qq.com/s/IBDnlzl_nFykemPxp7rt5w 一、问题复现 稳定复现问题才能正确的对问题进行定位、解决以及验证。一般来说&#xff0c;越容易复现的问题越容易解决。 (1) 模拟复现条件 有的问题存在于特定的条件下&#xff0c;只需要模拟出现问题的条件即…

外卖大数据案例

一、环境要求 HadoopHiveSparkHBase 开发环境。 二、数据描述 meituan_waimai_meishi.csv 是某外卖平台的部分外卖 SPU&#xff08;Standard Product Unit &#xff0c; 标准产品单元&#xff09;数据&#xff0c;包含了外卖平台某地区一时间的外卖信息。具体字段说明如下&am…

文件内容相关

1.查看文件 cat /etc/passwd 2.编辑文件 echo "i like dog" > qun.txt 标准输出重定向 echo "i like best cat" >> qun.txt 标准输出追加重定向 cat >> qun.txt cat >>qun.txt<< ene vim编辑 进入编辑模式 i 光标所在…

在unity中给游戏物体一个标记

标记 方便识别&#xff01; 标签&#xff08;Tag&#xff09; 引擎内部会对物体的标签建立了索引。通过标签查找物体&#xff0c;要比通过名字查找物体快得多。标签最多只能有 32个。前几个是常用标签&#xff0c;具有特定含义&#xff0c;例如玩家( Player)、主摄摄像机 (Mai…

【RTOS学习】优先级 | Tick | 任务状态 | 空闲任务 | 任务调度

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 优先级 | Tick | 任务状态 | 空闲任务 | 任务调度 &#x1f3c0;优先级⚽任务管理 &#x1f3c0;T…

PostMan使用csv/json进行数据参数化

创建csv文件 或者创建json文件 [{"name": "zhangsan","age": 18},{"name": "lisi","age": 20} ] 运行集合脚本的时候选择data文件 在请求接口中输入全局变量 {{user}}的方式进行传递 在Tests中要使用断言&…

C# Winform编程(4)多文档窗口(MDI)

多文档窗口&#xff08;MDI&#xff09; 添加菜单&#xff0c;IsMdiContainer设为True: From窗口添加菜单 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using S…

华为鸿蒙系统安装第三方软件 - 注意事项

华为鸿蒙系统安装第三方软件 - 注意事项 前言关闭增强防护关闭应用检测发现恶意软件解除软件管控 前言 华为鸿蒙系统默认开启纯净模式&#xff0c;仅支持安装经过华为应用市场检测的应用&#xff0c;并禁止运行病毒和风险应用。但此功能是可以关闭的&#xff0c;下文介绍如何安…

Qtday01(qt简介、简单窗口组件)

今日任务 仿qq登录界面&#xff0c;QT实现 代码&#xff1a; 头文件&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QLineEdit> #include <QLabel> #include <QPushButton> #include <QtDebug> #…

session认证

目录 前言 http协议的无状态性 session的工作原理 在express中使用session认证 在session中存数据 在session中取数据 清空session 结尾 前言 session是一种记录客户状态的机制&#xff0c;客户端浏览器法访问服务器的时候&#xff0c;服务器把客户端信息以某种形式记录…

基于闪电连接过程优化的BP神经网络(分类应用) - 附代码

基于闪电连接过程优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于闪电连接过程优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.闪电连接过程优化BP神经网络3.1 BP神经网络参数设置3.2 闪电连接过程算…

互联网Java工程师面试题·Java 总结篇·第四弹

目录 31、String s new String(“xyz”);创建了几个字符串对象&#xff1f; 32、接口是否可继承&#xff08;extends&#xff09;接口&#xff1f;抽象类是否可实现&#xff08;implements&#xff09;接口&#xff1f;抽象类是否可继承具体类&#xff08;concrete class&am…

【Qt控件之QToolButton】概述及示例

简介 QToolButton 类提供了一个快速访问命令或选项的按钮&#xff0c;通常在 QToolBar 内部使用。 工具按钮是一种特殊的按钮&#xff0c;用于快速访问特定的命令或选项。与普通的命令按钮相反&#xff0c;工具按钮通常不显示文本标签&#xff0c;而是显示一个图标。 通常情…

文件夹加密后,忘记文件夹密码怎么办?

文件夹加密是保护文件夹数据安全的重要手段&#xff0c;没有正确的密码将无法访问文件夹。那么&#xff0c;如果我们忘记了文件夹密码该怎么办呢&#xff1f;下面我们就一起来了解一下。 忘记文件夹密码怎么办&#xff1f; 以夏冰加密软件的产品为例&#xff0c;能够为文件夹设…

Groovy语法Gradle配置学习笔记

第一部分&#xff1a;Groovy语法 变量的类型和定义 Groovy所有类型都是对象类型&#xff1a; int x 10 println x.class double y 3.14 println y.classdef 定义变量&#xff1a; def str "dddd" println str.class字符串 字符串&#xff1a; // 单引号 双引号…

【环境配置】Windows10上的OpenFace安装与使用

&#xff08;小乱&#xff0c;待整理&#xff0c;先将就用&#xff09; github下载&#xff0c;安装必要的依赖&#xff0c;参考自&#xff1a; 缺东西的到这里看&#xff0c;缺啥安装啥 pip install opencv-pythonpip install CMakepip install Boostpip install dlib这些我…

去中心遇见混币器

区块链的去中心化交易所在保护隐私和安全性上有着无可比拟的优势&#xff0c;用户甚至不需要提供注册资料&#xff0c;只要有web3钱包即可跟智能合约交易。在uniswap上可兑换绝大多数加密币&#xff0c;新推出的衍生品交易所ununx已经可以交易美股&#xff0c;期货和外汇,一个全…

Babel 在Powershell 上无法查看版本

ES6 模块语法不能应用在ES5环境中 (ES6模块化语法不能在node.js中执行)&#xff0c;此时需要Babel进行转码 通过npm install -g babel-cli 安装好后&#xff0c;想通过 babel --version产看版本。但是无法查看 首先&#xff0c;我们要以管理员方式运行PowerShell&#xff0c;&…

网工记背配置基础命令总结(4)---DHCP配置

目录 1.DHCP相关配置 2.基于不同网段内DHCP服务器和DHCP中继 3.VRRP组网下同网段内配置基于全局地址池的DHCP服务器 4.配置DHCP客户端 5.DHCP snooping(网关防假冒)配置 6.IPSG(IPMAC绑定)配置 1.配置IPSG防止主机私自更改IP地址&#xff08;静态绑定&#xff09; 2.配…