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__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(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
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!

浙公网安备 33010602011771号