接口测试平台代码实现131: 全局变量-10

2022-05-19 10:03:37 浏览数 (1)

本节开始要进入比较烧脑的阶段了,请系好安全带,中途跳车的请刷卡。

我们在之前章节已经把变量组 的增删改查 都弄好了。接下来就是应用到实际的请求中了。

那么我首先拿项目的接口库普通接口调试 开刀吧:

我为了之后的拆分方便,新建了一个专门用来存放公共方法的py文件。

然后写好需要使用的方法导入:

现在我们开始写一个方法,用来 替换url,header,请求体中的全局变量。

之后我们的用例库用例调试/异常测试/用例库用例执行等全都要调用它~

具体代码如下:

代码语言:javascript复制
# 替换全局变量
def global_datas_replace(project_id:str,s:str) -> str :
    #根据项目变量去获得生效的变量组。
    global_data_ids = DB_project.objects.filter(id=project_id)[0].global_datas.split(',') #获取所有生效的变量组id
    global_datas = {}
    for i in global_data_ids:
        global_data = ast.literal_eval(list(DB_global_data.objects.filter(id=i).values())[0]['data'])
        global_datas.update(global_data)
    # 最终的gloabl_datas就是总变量池字典了
    #用正则找出所有需要替换的变量名称。
    # 处理url/header/data
    list_data = re.findall(r'~(.*?)~',s)
    for i in list_data:
        s = s.replace('~' i '~',str(global_datas[i]))
    #返回结果。
    return s

其中利用了 字典更新,遍历替换 等方法,其中暂时全用字符串形式进行完成,后续可能会有变动。

(ps: 这个方法是非常有优化价值的方法,首先几乎所有的请求都会调用它不止一次,而且其中的优化空间非常大,博主只是写了个好理解的方法。正好给大家提供了素材,想写文章优化的抓紧了。)

然后我们去views.py中顶部 引入这个方法:

然后我们先来测试下url替换好不好使

注意上图中,我利用api_id 找出了project_id,然后 给ts_url进行替换并打印。

再去做好俩个变量组:

然后弄个简单的测试接口,我们只测试url就可以了:

其中加入了俩个变量。然后请求看看效果:

可以看到,url替换是成功了。

(下节预告:url成功之后,header和请求体 还能如此顺利么?)

0 人点赞