zoukankan      html  css  js  c++  java
  • Fitnesse批量读取变量信息,并保存到用例执行上下文中

    Fitnesse变量可以分成两种,一种是自定义变量,另一种是用例执行过程中的临时变量。

    在Finesse使用过程中,如果需要定义一些公共的变量,可以统一在一个文件中使用自定义变量的方法,将公共变量全部定义好,然后在用例中引用该文件就可以了。

    但是遇到多环境以及公共变量比较多的时候,上面的方法就比较麻烦了。

    为了解决上面的问题,这里采用redis+修改Finesse源码的方式解决问题。

     1. redis:

    通过  环境名称+变量名称 的方式将变量和值保存在redis中

     2. 修改Finesse源码

     路径:

    FitnesseMastersrcfitnesseslimSlimExecutionContext.java

    修改其中的setVariable方法实现,这里约定,当name(用例执行过程中的临时变量名称)为variables时,就将value当做环境信息处理(value是一个json串,包含指定环境下的所有环境变量信息)。如果不是variables,就按照原实现处理。

     1 public void setVariable(String name, MethodExecutionResult value) {
     2       if(name.equals("variables")){
     3         System.out.println(String.valueOf(value));
     4         String variables_s=value.toString();
     5         Map<String,String> variablesMap=JSONObject.parseObject(variables_s,Map.class);
     6         for(Map.Entry<String,String> entry:variablesMap.entrySet()){
     7           variables.setSymbol(entry.getKey(), new MethodExecutionResult(entry.getValue(), Object.class));//将环境变量信息,保存到用例执行上下文中。
     8           System.out.println("1: "+entry.getKey()+"--"+entry.getValue());
     9         }
    10       }else{
    11         variables.setSymbol(name, value);//原实现,就这一行代码
    12         System.out.println("2: "+name+"--"+value);
    13       }
    14     }

     RedisFixture中reads方法的实现:

     1 public  String reads(String env){
     2         String value = "null";
     3         Set<String> keys = stringRedisTemplate.keys(env+"*");
     4         Map<String,String> v_map=new HashMap<>();
     5 
     6        for(String key:keys){
     7            Pattern pattern = Pattern.compile("(.*):(.*):(.*)");
     8            Matcher matcher = pattern.matcher(key);
     9            String v_name=null;
    10            while (matcher.find()) {
    11                v_name = matcher.group(3);
    12            }
    13            v_map.put(v_name,stringRedisTemplate.opsForValue().get(key));
    14        }
    15         value=JSONObject.toJSONString(v_map);
    16         return value;
    17     }

    用例编写:

     

     执行情况:

     当出现上如结果后,也就表示json串中的信息,全部被以临时变量的形式,保存到用例执行的上下文中了。

    如果需要使用这些变量,可以使用 $+变量名的方式获取值。比如需要使用上图中变量doUploadCfmFileTask_jobName的值,使用 $doUploadCfmFileTask_jobName即可。

  • 相关阅读:
    Perl语言入门笔记 第十六章 进程管理
    Perl语言入门笔记 第十五章 智能匹配与given-when结构
    Perl语言入门笔记 第十四章 字符串与排序
    Perl语言入门笔记 第十三章 目录操作
    Perl语言入门笔记 第十二章 文件测试
    artdialog
    trimend("asdas".tocharArry())
    jQuery.isEmptyObject() 函数详解 转
    ajax返回数据成功 却进入error方法
    为什么有些网站PING不通但又能访问.
  • 原文地址:https://www.cnblogs.com/moonpool/p/11988233.html
Copyright © 2011-2022 走看看