前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现131: 全局变量-10

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

作者头像
我去热饭
发布2022-05-19 10:03:37
2720
发布2022-05-19 10:03:37
举报
文章被收录于专栏:测试开发干货

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

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

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

我为了之后的拆分方便,新建了一个专门用来存放公共方法的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和请求体 还能如此顺利么?)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档