前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台:支持函数助手

接口测试平台:支持函数助手

作者头像
软件测试君
发布2020-01-02 10:25:07
4630
发布2020-01-02 10:25:07
举报
文章被收录于专栏:测试人生测试人生

因为接口的需求,需要支持类似于Jmeter中函数助手的功能。 以以下两个函数进行举例:

  • Random

Random

  • time

time

其实处理方式很简单,因为我们原本对${KEY}类型的字段,有一个getVariable函数的处理,详情可参考接口测试平台:接口执行顺序与依赖。我们只需要对${KEY}中的KEY的字符做解析,如果key以"__"开头,则调用函数助手。

下面只以random和time两个函数为例,讲解functionAssistant。

代码语言:javascript
复制
private static final String RANDOM = "__Random";
private static final String TIME = "__time";

/** 函数助手 */
private static String functionAssistant(String key){

    /**
     * 入参:最小值,最大值,变量名
     * __Random(1,99,INT)   =>   从1~99的数字,保存变量为 INT
     */
    if (key.startsWith(RANDOM)){
        String parameters = key.replace(RANDOM + "(","").replace(")","");
        String[] paramList = parameters.split(",");
        // 格式不对,返回空string
        if (paramList.length != 3 && paramList.length != 2){
            return key;
        }
        Long min = Long.valueOf(paramList[0]);
        Long max = Long.valueOf(paramList[1]);
        String value = String.valueOf((long) (min + Math.random()*(max - min +1)));
        if (paramList.length == 3){
            ApiTestConfig.globalVariableMap.put(paramList[2], value);
        }
        return value;
    }

    /**
     * 入参:时间格式,变量名
     * __time(,)  获取当前时间毫秒
     * __time(/1000,)  获取当前时间秒
     * __time(yyyy-MM-dd,)  获取yyyy-MM-dd格式时间
     */
    if (key.startsWith(TIME)){
        String parameters = key.replace(TIME + "(","").replace(")","");
        String[] paramList = parameters.split(",");
        Long now = System.currentTimeMillis();
        if (paramList.length == 0){
            return String.valueOf(now);
        }
        if (paramList[0].isEmpty() && !paramList[1].isEmpty()){
            // __time(,Var)
            ApiTestConfig.globalVariableMap.put(paramList[1], String.valueOf(now));
        }
        if (paramList[0].equals("/1000")){
            String value = String.valueOf(now / 1000);
            // __time(/1000,Var)或 __time(/1000,)
            if (paramList.length == 2){
                ApiTestConfig.globalVariableMap.put(paramList[1], value);
            }
            return value;
        }
        // __time(yyyy-MM-dd,)或__time(yyyy-MM-dd,Var),包含其他各种日期格式
        SimpleDateFormat sdf = new SimpleDateFormat(paramList[0]);
        String value = sdf.format(new Date(now));
        if (paramList.length == 2){
            ApiTestConfig.globalVariableMap.put(paramList[1], value);
        }
        return value;

    }
    return key;
}

更多函数,可直接在functionAssistant内进行拓展。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档