接口测试平台:支持函数助手(旧版已废弃)

素颜马尾好姑娘i 2023-06-24 04:53 57阅读 0赞

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

  • Random
    在这里插入图片描述
  • time
    在这里插入图片描述
    其实处理方式很简单,因为我们原本对${KEY}类型的字段,有一个getVariable函数的处理,详情可参考接口测试平台:接口执行顺序与依赖。我们只需要对 ${KEY}中的KEY的字符做解析,如果key以”__“开头,则调用函数助手。
    在这里插入图片描述
    下面只以random和time两个函数为例,讲解functionAssistant。

    private static final String RANDOM = “Random”;
    private static final String TIME = “
    time”;

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

    1. /**
    2. * 入参:最小值,最大值,变量名
    3. * __Random(1,99,INT) => 从1~99的数字,保存变量为 INT
    4. */
    5. if (key.startsWith(RANDOM)){
    6. String parameters = key.replace(RANDOM + "(","").replace(")","");
    7. String[] paramList = parameters.split(",");
    8. // 格式不对,返回空string
    9. if (paramList.length != 3 && paramList.length != 2){
    10. return key;
    11. }
    12. Long min = Long.valueOf(paramList[0]);
    13. Long max = Long.valueOf(paramList[1]);
    14. String value = String.valueOf((long) (min + Math.random()*(max - min +1)));
    15. if (paramList.length == 3){
    16. ApiTestConfig.globalVariableMap.put(paramList[2], value);
    17. }
    18. return value;
    19. }
    20. /**
    21. * 入参:时间格式,变量名
    22. * __time(,) 获取当前时间毫秒
    23. * __time(/1000,) 获取当前时间秒
    24. * __time(yyyy-MM-dd,) 获取yyyy-MM-dd格式时间
    25. */
    26. if (key.startsWith(TIME)){
    27. String parameters = key.replace(TIME + "(","").replace(")","");
    28. String[] paramList = parameters.split(",");
    29. Long now = System.currentTimeMillis();
    30. if (paramList.length == 0){
    31. return String.valueOf(now);
    32. }
    33. if (paramList[0].isEmpty() && !paramList[1].isEmpty()){
    34. // __time(,Var)
    35. ApiTestConfig.globalVariableMap.put(paramList[1], String.valueOf(now));
    36. }
    37. if (paramList[0].equals("/1000")){
    38. String value = String.valueOf(now / 1000);
    39. // __time(/1000,Var)或 __time(/1000,)
    40. if (paramList.length == 2){
    41. ApiTestConfig.globalVariableMap.put(paramList[1], value);
    42. }
    43. return value;
    44. }
    45. // __time(yyyy-MM-dd,)或__time(yyyy-MM-dd,Var),包含其他各种日期格式
    46. SimpleDateFormat sdf = new SimpleDateFormat(paramList[0]);
    47. String value = sdf.format(new Date(now));
    48. if (paramList.length == 2){
    49. ApiTestConfig.globalVariableMap.put(paramList[1], value);
    50. }
    51. return value;
    52. }
    53. return key;

    }

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

发表评论

表情:
评论列表 (有 0 条评论,57人围观)

还没有评论,来说两句吧...

相关阅读