0


Postman和Apifox针对不同环境、全局变量的使用与比较

文章目录

一、Postman

1、配置环境和全局变量

在Postman的界面中,点击"Environment",添加我们需要的环境,如下图,添加了forlan1、forlan2两个环境,并设置了ip变量,分别对应localhost:8881和localhost:8882
在这里插入图片描述
在这里插入图片描述
前面定义的ip变量,使用的话,格式为:{{变量名}},在我们的请求路径中写上{{ip}},就会根据我们选择不同环境,自动替换为对应的值
在这里插入图片描述
除此之外,我们还可以定义全局变量,通过点击“Add”或“Edit”,设置我们的全局变量token
在这里插入图片描述
在请求头的Authorization设置上我们的全局变量,如下:
在这里插入图片描述
到此,就定义完成了,接下来进行测试

2、验证

选择环境forlan1,请求接口
在这里插入图片描述
选择环境forlan2,请求接口
在这里插入图片描述
可以看到,两个环境都设置成功,请求成功了

3、存在问题分析

前面我们针对Ip+端口号定义了2个不同的环境,但在实际开发中,如果我们有很多项目,那是不是要定义很多环境,这样就很麻烦。
一般来说,我们环境是分为本地、测试、灰度、线上环境,对于测试、灰度、线上环境是可以设置为对应的域名,请求会根据Nginx配置规则自动帮我们找到对应的服务,但对于我们本地来说,不同项目,对应不同端口号,在本地测的话,我们要配很多环境,就很麻烦。

总的来说,就是对于同个ip不同端口,我们需要配置很多环境,而且,我们还得分清楚那个环境对应那个请求路径,很麻烦!

二、Apifox

1、配置环境和全局参数

在Apifox的界面中,点击“管理环境”,进入设置页
在这里插入图片描述
新建环境"forlan",设置保存
在这里插入图片描述
在这个界面中,还可以设置全局变量和全局参数,我们设置全局的请求头信息,设置Authorization参数,如下
在这里插入图片描述

2、创建公共脚本

在我们接口保存的目录下,添加一个前置操作-公共脚本
在这里插入图片描述
说明:之所以要这么定义,这个目录下新建的接口,会自动继承了父类的脚本
在这里插入图片描述
一开始脚本都是空的,如下:
在这里插入图片描述
点击管理公共脚本,进入界面,新建脚本,保存
在这里插入图片描述
回到我们这个页面,选择我们刚刚创建的脚本,设置上即可
在这里插入图片描述

3、测试

切换到我们的“forlan”环境,点击“发送”
在这里插入图片描述
切换到我们的“forlan”环境,点击“发送”
在这里插入图片描述
可以,看到两个都请求成功了

总结

对于同个ip不同端口,Postman需要定义很多套环境,并且比较混乱,我们还需要知道那个环境对应那个请求;而对于Apifox,直接针对某个ip定义一个环境即可,通过脚本去匹配请求路径,找到对应的端口号填充就行了,麻烦在于这个脚本的编写而已,除了脚本这种方式,还可以通过全局变量设置动态值实现,如下,后续再和大家交流下实现,也可以参考下Apifox 帮助文档自己实现下。在这里插入图片描述还有一点就是,Apifox比较细粒度区分了全局参数,我们可以直接设置对应的参数,不需要再去接口中填充{{变量名}},默认帮我们追加了
在这里插入图片描述
在这里插入图片描述

写脚本遇到的问题:Cannot read properties of undefined (reading ‘startsWith’)

主要原因是path的值为空,没取到,所以报错了

const path = request.path;
const port = 80;if(path.startsWith('/api/v1')){
    port = 8888;}

可以增加如下判断,就不会报上面的错误了,但出现了新错误:`Assignment to constant variable.

const path = request && request.path;  
const port = 80;if(path && path.startsWith('/api/v1')){  
    port = 8888;}

port的定义从const改为let即可,但这里还是获取不到请求路径

const path = request && request.path;  
let port = 80;if(path && path.startsWith('/api/v1')){  
    port = 8888;}

原因是request.path拿不到请求路径的,要改为request.url,最终代码如下:

const path = request && request.url;  
let port = 80;if(path && path.startsWith('/api/v1')){  
    port = 8888;}
注:可以通过console.log('request URL:', request.url);打印看看值对不对
标签: postman 测试工具

本文转载自: https://blog.csdn.net/qq_36433289/article/details/134812700
版权归原作者 程序员Forlan 所有, 如有侵权,请联系我们删除。

“Postman和Apifox针对不同环境、全局变量的使用与比较”的评论:

还没有评论