Fitnesse批量读取变量信息,并保存到用例执行上下文中
Fitnesse变量可以分成两种,一种是自定义变量,另一种是用例执行过程中的临时变量。
在Finesse使用过程中,如果需要定义一些公共的变量,可以统一在一个文件中使用自定义变量的方法,将公共变量全部定义好,然后在用例中引用该文件就可以了。
但是遇到多环境以及公共变量比较多的时候,上面的方法就比较麻烦了。
为了解决上面的问题,这里采用redis+修改Finesse源码的方式解决问题。
1. redis:
通过 环境名称+变量名称 的方式将变量和值保存在redis中

2. 修改Finesse源码
路径:
\FitnesseMaster\src\fitnesse\slim\SlimExecutionContext.java
修改其中的setVariable方法实现,这里约定,当name(用例执行过程中的临时变量名称)为variables时,就将value当做环境信息处理(value是一个json串,包含指定环境下的所有环境变量信息)。如果不是variables,就按照原实现处理。
public void setVariable(String name, MethodExecutionResult value) {
if(name.equals("variables")){
System.out.println(String.valueOf(value));
String variables_s=value.toString();
Map<String,String> variablesMap=JSONObject.parseObject(variables_s,Map.class);
for(Map.Entry<String,String> entry:variablesMap.entrySet()){
variables.setSymbol(entry.getKey(), new MethodExecutionResult(entry.getValue(), Object.class));//将环境变量信息,保存到用例执行上下文中。
System.out.println("1: "+entry.getKey()+"--"+entry.getValue());
}
}else{
variables.setSymbol(name, value);//原实现,就这一行代码
System.out.println("2: "+name+"--"+value);
}
}
RedisFixture中reads方法的实现:
public String reads(String env){
String value = "null";
Set<String> keys = stringRedisTemplate.keys(env+"*");
Map<String,String> v_map=new HashMap<>();
for(String key:keys){
Pattern pattern = Pattern.compile("(.*):(.*):(.*)");
Matcher matcher = pattern.matcher(key);
String v_name=null;
while (matcher.find()) {
v_name = matcher.group(3);
}
v_map.put(v_name,stringRedisTemplate.opsForValue().get(key));
}
value=JSONObject.toJSONString(v_map);
return value;
}
用例编写:

执行情况:

当出现上如结果后,也就表示json串中的信息,全部被以临时变量的形式,保存到用例执行的上下文中了。
如果需要使用这些变量,可以使用 $+变量名的方式获取值。比如需要使用上图中变量doUploadCfmFileTask_jobName的值,使用 $doUploadCfmFileTask_jobName即可。
Fitnesse批量读取变量信息,并保存到用例执行上下文中的更多相关文章
- opencv图像处理时使用stringstream批量读取图片,处理后并保存
简介: 同文件输入输出流一样,使用stringstream可以批量读取图片,处理后并进行保存.因为C++中头文件 stringstream既可以从string读数据也可向string写数据,利于其这个 ...
- simotion读写CF卡,保存/读取变量
simotion读写CF卡功能 1 使用西门子的Simotion运动控制器时,有时需要用到 读/写 CF卡的功能.主要来自以下几个方面的需求. 1)用户数据量较大,可保持(retain)存储区的容量不 ...
- R8—批量生成文件夹,批量读取文件夹名称+R文件管理系统操作函数
一. 批量生成文件夹,批量读取文件夹名称 今日,工作中遇到这样一个问题:boss给我们提供了200多家公司的ID代码(如6007.7920等),需要根据这些ID号去搜索下载新闻,从而将下载到的新闻存到 ...
- C++开发人脸性别识别教程(8)——搭建MFC框架之读取目录信息
在上一篇博客中我们已经绘制了MFC界面,在这篇博客中我们将加入响应代码,为MFC框架加入一个最主要的功能:打开一个目录. 一.加入相关头文件 这里头文件主要包括三类:opencv头文件.批量读取文件相 ...
- ASP.NET Core的配置(1):读取配置信息
提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...
- matlab文件读写处理实例(二)——textread批量读取文件
问题:对文件夹下所有文件进行批量读取,跳过文件头部分,读取每个文件数据部分的7,8,9列,保存到变量并且输出到文件. 数据: 文件夹11m\
- Opencv-Python:图像尺寸、图像的读取、显示、保存与复制
Opencv-Python:图像尺寸.图像的读取.显示.保存与复制 原创 2017年11月23日 21:30:49 4440 在使用opencv的方法时,首先必须导入opencv包.新的opencv导 ...
- Matlab批量读取文件夹文件
现在有一个文件夹 里面有50个左右的txt文件 每个文件大概三万行 两列 第一列是字符串 第二列是浮点数字 我只需要读第二列 现在我想写一个.M文件 批量读取这个文件夹里的txt文件 读取完以后的数组 ...
- postman使用之四:切换环境和设置读取变量
postman提供了environment管理功能,想要在多个环境中测试,比如在测试环境.灰度环境.生产环境等,只需要用同样的接口,切换下环境即可,非常方便.具体步骤: 切换环境 1.点击界面右上角的 ...
随机推荐
- 深入浅出 Java Concurrency (24): 并发容器 part 9 双向队列集合 Deque[转]
有一段时间没有更新了.接着上节继续吧. Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque.这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂.下图描 ...
- SPSS超详细操作:分层回归(hierarchical multiple regression)
SPSS超详细操作:分层回归(hierarchical multiple regression) 1.问题与数据 最大携氧能力(maximal aerobic capacity, VO2max)是评价 ...
- double转String
两种方式: 1.value = new DecimalFormat().format(double); 2.value = String.valueOf(double); 要相保留所有的double位 ...
- 懒散惯了,该收收心了,两天了,封装了一个R0下注册表类
写得乱七八糟. 看着自己写的代码,感觉都不像自己了. 我写的代码,风格这么差了么?思路这么乱了么? 我写代码这么累么? 不像以前的我了... 这段时间,太懒散了... 该继续努 ...
- pptp,l2tp获取登录用户信息用pppd参数即可
这个问题困扰了我很久,终于在pppd的man文档里,发现了踪迹.在man中的SCRIPTS下有一系列的参数,其中PEERNAME就是登陆的用户名,并且在/etc/ppp/ip-up和/etc/ppp/ ...
- 汇编语言LAHF和SAHF指令
LAHF(加载状态标志位到 AH)指令将 EFLAGS 寄存器的低字节复制到 AH.被复制的标志位包括:符号标志位.零标志位.辅助进位标志位.奇偶标志位和进位标志位.使用这条指令,可以方便地把标志位副 ...
- List--列表合成
1,基本规则是,一对中括号里面包含一个表达式,表达式里可以有for语句,还可以有分支的for或者if语句. 2,例如: 3,列表合成可以快速地合并多个列表. 例如: 当然还可以直接加:[1, 2, 3 ...
- 阿里云 Aliplayer高级功能介绍(六):进度条标记
基本介绍 Aliplayer在进度条上提示时间和缩略图功能外,还可以进行视频内容的提示打点,当然不止是进度条上显示打点的内容,还提供一组接口,方便用户进行打点时间和内容的获取, 基本UI如下图所示: ...
- Tensorflow通过CNN实现MINST数据分类
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_dat ...
- Spring+quartz集群解决多服务器部署定时器重复执行的问题
一.问题描述 Spring自带的Task虽然能很好使用定时任务,只需要做些简单的配置就可以了.不过如果部署在多台服务器上的时候,这样定时任务会在每台服务器都会执行,造成重复执行. 二.解决方案 Spr ...