【接口自动化】参数化替换

在做接口测试时,除了测单个接口,还需要进行业务链路间的接口测试

比如**[注册-登陆]**需要token鉴权的业务流

当我们用使用postman/jmeter等工具时,将注册接口 的一些响应信息提取出来,放到登陆接口的请求中,来完成某个业务流的接口测试。

截取postman部分图示:

Step1:新增环境变量,并且通过编写postman脚本将响应字段提取并且保存到环境变量中
Step2:引用变量,在你需要引用变量的位置通过{{XXX}},XXX代表的是变量名

在后续接口的请求中引入{{token}},将从环境变量中把token的数值提取出来,替换掉{{token}},进行接口请求

同样的,在接口自动化编写代码时,我们也可以参考postman的参数化替换:

后续接口 如果需要使用前面接口的响应信息,直接从环境变量中取出来,通过正则表达式的替换安装到自己的需要字符串里面

举例如下:

通过正则匹配{{(.*?)}}找到{{mobile_phone}},再找到里面的mobile_phone,拿mobile_phone去环境变量中找到对应的响应值,通过字符串的replace方法,把{{mobile_phone}}替换为具体的值比如:15764340463
java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现

  • Pattern类的作用在于编译正则表达式后创建一个匹配模式.

  • Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配

java 复制代码
public class RegexUtils {
    public static void main(String[] args){
        //1、在环境变量中,存在 变量及值"mobile_phone","13323234545"...
        //这里方便演示,手动存入
        Environment.envMap.put("mobile_phone","13323234545");
        Environment.envMap.put("pwd","123456");
        Environment.envMap.put("id","666");

        //2、接口请求数据中,为了方便管理测试数据,写成如下json样式,发送请求之前,进行参数化替换
        String str = "{\n" +
                "    \"mobile_phone\": {{mobile_phone}},\n" +
                "    \"pwd\": {{pwd}},\n" +
                "    \"id\":{{id}}\n" +
                "}";
        System.out.println("原始的字符串:"+str);
        String replaceStr = regexReplace(str);
        System.out.println("替换后的字符串:"+replaceStr);

    }

    /**
     * 字符串替换
     * @param orgStr 原始字符串
     * @return 替换后的字符串
     */
    public static String regexReplace(String orgStr){
        String result =  orgStr;
        //compile------------编译 Pattern正则匹配器
        Pattern pattern = Pattern.compile("\\{\\{(.*?)\\}\\}");
        //matcher匹配对象,和原始字符串相匹配
        Matcher matcher = pattern.matcher(orgStr);
        while (matcher.find()) {
            //找到的完整字符串
            String allGetStr = matcher.group(0);
            System.out.println("找到的完整字符串:"+allGetStr);
            //找到{{XXX}}内部的匹配的字符串
            String innerStr = matcher.group(1);
            System.out.println("找到的内部字符串:"+innerStr);
            //具体的要替换的值(从环境变量中找到的)
            Object replaceValue = Environment.envMap.get(innerStr);
            //替换
            result = result.replace(allGetStr,replaceValue+"");
        }
        return result;
    }

}

运行结果:

关于具体的表达式内容,可以看这篇👉 CSDN

相关推荐
工业通讯探索者2 小时前
ProfiNet转CANopen协议转换网关驱动新能源汽车生产线多轴同步控制
自动化·工业物联网·协议转换网关·网关模块·总线协议
小马哥编程4 小时前
【软件测试】自动化测试结合 CI/CD有哪些方案
自动化·集成测试·测试覆盖率
weixin_457885825 小时前
JavaScript智能对话机器人——企业知识库自动化
开发语言·javascript·自动化
东方佑5 小时前
利用Python自动化处理PPT样式与结构:从提取到生成
python·自动化·powerpoint
niuniu_6667 小时前
简单的自动化场景(以 Chrome 浏览器 为例)
运维·chrome·python·selenium·测试工具·自动化·安全性测试
吾日三省吾码19 小时前
Python 脚本:自动化你的日常任务
数据库·python·自动化
遇见火星21 小时前
自动化发布工具CI/CD实践Jenkins常用工具和插件的使用
运维·ci/cd·自动化·jenkins·自动化发布
Blossom.1181 天前
边缘计算:工业自动化的智能新引擎
人工智能·5g·自动化·边缘计算·database·兼容性·5g通讯
eqwaak01 天前
量子计算与AI音乐——解锁无限可能的音色宇宙
人工智能·爬虫·python·自动化·量子计算
软件测试曦曦1 天前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化