java接口自动化系列(08):解析请求入参
本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/15867903.html
实现目标
将请求中的常用变量、关联参数占位符替换为实际值。
测试类中添加全局变量
// 替换符 public static Pattern replaceParamPattern = Pattern.compile("\\$\\{(.*?)\\}"); // 存放全局变量的map public static Map<String, String> globalVariableMap = new HashMap<String, String>();
添加工具类
StringUtil.java
package com.qzcsbj.autotest.utils; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class StringUtil { public static boolean isNotNullAndEmpty(String s){ return s!=null && s.trim().length()!=0; } }
GlobalVariableUtil.java
package com.qzcsbj.autotest.utils; import com.qzcsbj.autotest.testcase.BaseCase; import org.apache.log4j.Logger; import org.testng.Assert; import java.util.regex.Matcher; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class GlobalVariableUtil { public static Logger logger = Logger.getLogger(GlobalVariableUtil.class); /** * 从全局map中获取全局变量并替换 * @param param * @return */ public static String substitutionGlobalVariable(String param){ if (!StringUtil.isNotNullAndEmpty(param)){ return ""; } Matcher matcher = BaseCase.replaceParamPattern.matcher(param); while (matcher.find()) { String replaceKey = matcher.group(1).trim(); // 得到第一个匹配内容 String value; // 从全局变量map中获取值 if ("".equals(replaceKey) || !BaseCase.globalVariableMap.containsKey(replaceKey)){ value = null; Assert.fail("替换失败"); // 如果未能找到对应的值,该用例失败 } else { value = BaseCase.globalVariableMap.get(replaceKey); // logger.info("value: " + value); } param = param.replace(matcher.group(), value); } return param; } }
修改测试方法
logger.info("处理前的请求参数是:"+parameters); // 替换入参中的非关联参数 parameters = VariableUtil.variableSubstitution(parameters); // 替换入参中的关联参数 parameters = GlobalVariableUtil.substitutionGlobalVariable(parameters); logger.info("处理后的请求参数是:"+parameters);
结果演示
测试文件中数据
运行testng.xml文件,解析替换后结果
然后就可以发送请求了,下一篇分享。
__EOF__
![微信:ren168632201](https://files-cdn.cnblogs.com/files/uncleyong/wx.bmp)
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(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
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!