python接口自动化系列(08):解析请求入参
本系列汇总,请查看这里: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))
运行结果
通过替换前后对比可以看到,都解析替换成功了
然后就可以发送请求了,下一篇分享。
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!