【Apifox】设置apiFox自动获取token

news2024/12/28 19:34:11

文章目录

  • 问题描述
  • 解决方案
  • 注意事项
  • 参考文章

问题描述

接口测试时,每次都需要手动登录获取token,先登录系统,从浏览器中复制token,再到apifox的接口上把token帖上去,然后才能去测试具体的接口;更麻烦的是,切换环境的时候,token也要换,又要把上面的步骤重做一遍。能不能在运行接口用例前自动完成登录获取token?

解决方案

使用Apifox进行接口测试,通过前置操作,创建公共脚本模拟登录,自动获取token并填充到接口请求头中,这样就可以实现每次调用接口自动登录获取最新token了。详细步骤如下:

  1. 定义环境变量。分别在开发环境和测试环境中设置登录的用户名及密码。
    在这里插入图片描述
  2. 在项目设置>>公共脚本中新建脚本>>保存
    在这里插入图片描述
    脚本如下:
    // 定义用户名变量
    var username;
    // 获取环境里变量:前置URL、用户类型
    const baseUrl = pm.environment.get('BASE_URL');
    const userType = pm.environment.get('userType');
    // 根据用户类型的值取相应的用户名
    switch (userType) {
    	case '1':
    		username = pm.environment.get('user01');
    		break;	// 使用break关键字来阻止代码自动地向下一个case运行
    	case '2':
    		username = pm.environment.get('user02');
    		break;
    	default:	//使用default关键词来规定匹配不存在时做的事情
    	username = pm.environment.get('user03');
    };
    
    // 定义登录url变量,根据前置URL的值取相应的登录地址
    var loginUrl
    if (baseUrl == 'https://app-dev2.com') {
    	loginUrl = 'https://dev.com/login/password';
    } else {
    	loginUrl = 'https://uat.com/login/password';
    };
    
    // 获取环境变量-密码
    const password = pm.environment.get('password');
    // 打印登录的用户名及密码
    console.log('username/password>>>' + username + '/' + password);
    
    // 定义请求参数
    var payload = {
    	"username": username,
    	"password": password,
    	"grant_type": "password",
    	"isVerify": "True"
    };
    
    // 构造一个POST,body为json格式的请求
    const loginRequest = {
    	// 请求地址
    	url: loginUrl,
    	// 请求方法
    	method: 'POST',
    	// 请求头,写法1:
    	header: [
    		'Content-Type:application/json;charset=UTF-8',
    		'Accept-Language:zh-CN,zh;q=0.9',
    		'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
    	],
    	// 写法2:
    	//header: {
    	//	"Content-Type":"application/json;charset=UTF-8",
    	//	"Accept-Language":"zh-CN,zh;q=0.9",
    	//	"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
    	//},
    	
    	// 请求体
    	body: {
    		mode: 'raw',
    		raw: JSON.stringify(payload)
    	}
    };
    
    // 发送请求
    pm.sendRequest(loginRequest, function (err, res){
    	if (err) {
    		console.log('err>>>' + err);
    	} else {
    		// 读取接口返回的json数据
    		var r_json = eval(res.json());
    		// 从json数据中提取token并打印
    		var login_token = r_json.datas.access_token;
    		console.log('token>>>' + login_token);
    		// 动态设置请求头token
    		pm.request.headers.add({key: "Authorization", value: "Bearer " + login_token});
    	}
    });
    
  3. 在接口目录中添加前置操作>>选择公共脚本,添加步骤2创建好的公共脚本 >> 点击【保存】
    在这里插入图片描述
  4. 运行目录下的接口用例,运行成功!成功实现全自动登录获取token!
    在这里插入图片描述

注意事项

  1. 以 header: { xxx:xxx } 形式定义header会使发送到本地的http请求报错:“ERR_INVALID_HTTP_TOKEN”,同时http请求并不会到达本地。这可能与本地使用的若依框架有关。需要将header的形式改为 header: [ ‘xxx:xxx’ ] 或 header: ‘xxx:xxx’
  2. header缺少User-Agent会使若依框架在登录生成token时运行异常,需要添加header: [ ‘User-Agent:xxx’ ]
  3. 即使在脚本中将登录生成的 token 写入环境变量 ACCESS_TOKEN,该次接口调用也无法使用新的 token,使用的依然是上次设置的 ACCESS_TOKEN。需要将本次的 token 直接加入本次请求的请求头中:pm.request.headers.add({key: “Authorization”, value: "Bearer "+login_token}),注意一定要使用 {key: xxx, value: xxx} 的形式。

参考文章

Postman/Apifox接口测试——Pre-request自动登录
登录态(Auth)如何处理

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

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

相关文章

【实时数仓】热度关键词接口、项目整体部署流程

文章目录一 热度关键词接口1 Sugar配置(1)图表配置(2)接口地址(3)数据格式(4)执行SQL2 数据接口实现(1)创建关键词统计实体类(2)Mappe…

小黑hbase终于勉强跑到了自己的m1 Macbook上啦,虽然终端用不了,但是能从happybase访问的日常积累:happybase简单使用

1.happybase连接 # 连接操作 import happybase# 建立连接 con happybase.Connection(localhost, 9090) con.open() # 输出所有表名称 print(con.tables()) # 关闭传输 con.close() con.open()2.创建表格 # 创建表格 con happybase.Connection(localhost, 9090) # 默认9090…

Android 图像混合技术

Android 图像混合技术 色彩知识 色彩 光学三原色 光学三原色由:红、绿、蓝组成。 色值分别是: 红(red ):#FF0000 RGB(255,0,0)绿(green)&am…

第十九讲:神州路由器基础知识

路由器简介路由器(Router)是连接Internet中多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读”懂对方的数据,实现不同网络或网段的互联互通。此外,它会根据…

数据平台建设指南(上)

前言 年底了,整理了下过去做的一些项目,希望能够给大数据行业的同学提供些大数据平台建设的思路。内容大致分五部分:数据采集,数据存储、数据计算、基础平台以及数据治理篇。由于涉及到的内容较多,打算分成两篇文章&am…

PHY驱动注册部分

SOC可以对PHY 进行配置或者读取PHY 相关状态,这个就需要 PHY 内部寄存器去实现了。PHY 芯片寄存器地址空间为 5位(支持访问32个寄存器).IEEE 定义了0~15这 16个寄存器的功能。而 16~31这16 个寄存器由厂商自行实现。 就是说不管你用的哪个厂家的 PHY 芯…

SAP ABAP——SAP简介(三)【S/4 HANA开发环境】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

linux常用命令(三)-目录操作

目录创建 - mkdir 我们可以使用mkdir(make directory)来创建目录。 示例 目录删除 - rm 可以使用rm(remove)来删除一个目录 语法 rm [-irf] name ...i:删除前逐一询问确认r:将目录及以下之档案亦逐一删…

转转AB平台的设计与实现

导读 在数据驱动时代,不管是在产品功能迭代还是策略决策时都需要数据的支撑。那么,当我们准备上线一个新功能或者策略时,如何评估新老版本优劣,即数据的可量化就成了问题。这个时候就需要引入 A/B Test 了。 一、A/B Test 是什么…

Tomcat基本用法

Tomcat基本用法一、Tomcat 是什么二、下载安装三、目录结构四、启动服务器五、部署静态页面一、Tomcat 是什么 汤姆猫? 事实上,Java 世界中的 “汤姆猫” 完全不是一回事,但是同样大名鼎鼎 ~ Tomcat 是一个 HTTP 服务器。 前面我们已经学…

公司如何做好舆情监控,舆情监控解决方案有哪些?

随着互联网快速发展,企业网络舆情动态成为决策发展的重要依据,所以做好网络舆情监控至关重要,接下来TOOM舆情监测小编带您简单了解公司如何做好舆情监控,舆情监控解决方案有哪些? 一、公司如何做好舆情监控 舆情监控是指通过不…

Spring Boot 使用 SpringDoc 库的 Swagger3.0

Swagger 定义 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步…

房产管理系统平台安全性分析?

房产管理系统是数图互通公司自主研发的FMCenterV5.0平台,是针对中国高校房产的管理特点和管理要求,研发的一套标准产品;通过在中国100多所高校的成功实施和迭代,形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。 以下是…

FL Studio21电脑版免费音乐编曲宿主软件下载

编曲主要考验电脑的处理器(CPU)性能、声卡。所以配置电脑的时候有条件的伙伴可以着重考虑这两方面。现在市面上惠普、戴尔、华为、苹果等品牌的电脑,在四五千这个范围的商务本,就可以胜任编曲工作。但是在一些较为庞大的工程中可能…

SolarMesh(微服务监管平台)安装教程

SolarMesh简介 SolarMesh是基于服务网格构建的微服务监管平台。SolarMesh基于 Istio 及容器技术,提供微服务流量监控和管理,提供完善的非侵入式服务治理解决方案,在提供Istio流量管理等基础能力外,还提供多集群纳管、监控告警、W…

为什么全球科技巨头都在布局超高清?

我们能明显地感受到,进入21世纪以来,影像视频所占用人类生活的时间、空间已达到人类诞生以来的最大值。根据《2022全球互联网现象报告》,2021年流媒体视频占互联网带宽流量的53.7%,比2020年提升了4.8%。衣食住行,休闲娱…

十亿人都在用的健康码,运维体系是怎么设计的?

导读|随着疫情防控模式的迭代,健康码访问DAU逐渐趋于下跌,意味着健康码将逐步完成历史使命,见证着疫情的结束。本文特邀腾讯研发工程师李雄政将从技术架构、可观测体系、运营保障体系等运维体系多方面,总结回顾健康码业…

骨传导耳机到底怎么样,五款好用的骨传导耳机推荐

还有很多人不知道骨传导耳机使用感受到底如何,骨传导耳机是开放式的听音方式,在使用骨传导耳机时,会更加安全、耳机的声音相对于入耳式的声音会更加具有空间立体感,具体使用感感受到底如何,看下文大家就有一定的了解了…

服务器ssl证书升级

最近服务器扫描出ssl证书是使用弱哈希算法签名的SSL证书(CVE-2004-2761)【原理扫描】,要求联系证书颁发机构重新颁发证书。使用弱哈希算法签名SSL证书的端口有1433,3389。所有要对这俩端口配置一个新的证书。算法且满足sha256。 下面是我我服务器证书升…

国际原子时(TAI),GPS时间,协调世界时(UTC)以及rinex文件起止时间

最近学习使用PRIDE-PPPAR处理GNSS原始数据,判断rinex文件是不是单天的问题实在让人费解。必应搜索了一下,结合手头上的软件,问题大致弄清楚了。 比如现在有1个rinex文件:GPSR0190.19O,如果用PRIDE-PPPAR 的命令pdp3处…