本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074
实现目标
将请求中的常用变量、关联参数占位符替换为实际值。
修改项目配置
settings.py添加如下内容:
# 环境信息
ENV_HOST_PORT = 'http://168.168.168.168:8080'
# 替换符
PATTERN = '\$\{(.*?)\}'
修改、添加工具类
utils下添加global_variable_tool.py,用于获取依赖参数
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: 韧
# @wx: ren168632201
# @Blog: https://www.cnblogs.com/uncleyong/
import logging
logger = logging.getLogger(__name__)
class GlobalVariable(object):
__instance = None
def __new__(cls, *args, **kwargs):
if not cls.__instance:
cls.__instance = object.__new__(cls, *args)
return cls.__instance
def __init__(self):
self.globalVars = {}
self.res = []
def getVar(self,key):
'''获取某个全局变量'''
return self.globalVars.get(key)
def getVars(self):
'''获取全部全局变量'''
return self.globalVars
def deleteVar(self,key):
'''删除某个全局变量'''
self.globalVars.pop(key)
def cleanVars(self):
'''清空全局变量'''
self.globalVars.clear()
def deleteVars(self):
'''删除全局变量'''
del self.globalVars
utils下修改substitution_tool.py,添加替换依赖参数的方法:
def parameter_substitution(param):
'''依赖参数值替换为实际值'''
keys = re.findall(PATTERN, param)
print(keys)
for key in keys:
value = gv.getVar(key)
param = param.replace('${' + key + '}', str(value)) # replace返回替换后的新字符串
return param
修改测试类
解析请求参数并替换
添加:
headers = casedata["request"]["headers"]
# logger.info(">>>>>headers:{}".format(headers))
# logger.info(">>>>>headers:%s" % headers)
method = casedata["request"]["method"]
# logger.info(">>>>>method:{}".format(method))
url = ENV_HOST_PORT + casedata["request"]["url"]
# logger.info(">>>>>url:{}".format(url))
params = casedata["request"]["params"]
logger.info(">>>>>替换前params:{}".format(params))
# <class 'dict'>
# logger.info(type(params))
if params:
params = parameter_substitution(str(params))
params = var_substitution(params)
logger.info(">>>>>替换后params:{}".format(params))
运行结果
通过替换前后对比可以看到,都解析替换成功了
然后就可以发送请求了,下一篇分享。