本节开始要进入比较烧脑的阶段了,请系好安全带,中途跳车的请刷卡。
我们在之前章节已经把变量组 的增删改查 都弄好了。接下来就是应用到实际的请求中了。
那么我首先拿项目的接口库普通接口调试 开刀吧:
我为了之后的拆分方便,新建了一个专门用来存放公共方法的py文件。
然后写好需要使用的方法导入:
现在我们开始写一个方法,用来 替换url,header,请求体中的全局变量。
之后我们的用例库用例调试/异常测试/用例库用例执行等全都要调用它~
具体代码如下:
# 替换全局变量
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和请求体 还能如此顺利么?)