修改关联添加用例的机制,传入特殊字符串时会添加全部文本

This commit is contained in:
彭宇琦 2020-03-25 19:22:52 +08:00
parent 84bab79c44
commit 2e7af80fc8
1 changed files with 49 additions and 1 deletions

View File

@ -22,6 +22,11 @@ import org.dom4j.io.SAXReader;
*
*/
public abstract class Case {
/**
* 用于标记获取标签下所有的文本
*/
final String ALL = "-1:getAllText";
/**
* 用于存储需要替换的词语的开始标记
*/
@ -96,7 +101,12 @@ public abstract class Case {
//循环替换content中所有需要替换的信息
while( (index = sb.indexOf(START_SIGN)) != -1 ) {
//存储待替换的变量名
String var = sb.substring(index + START_SIGN.length(), sb.indexOf(END_SIGN));
String var = "";
try {
var = sb.substring(index + START_SIGN.length(), sb.indexOf(END_SIGN));
} catch (StringIndexOutOfBoundsException e) {
throw new CaseContentException("词语替换错误,无效的标记字符:" + text);
}
//替换该变量名
sb.replace(index, sb.indexOf(END_SIGN) + END_SIGN.length(), wordMap.get(var));
}
@ -217,6 +227,15 @@ public abstract class Case {
fieldTextMap.get(label.getName()).add(text);
}
/**
* 用于添加多行文本
* @param label 标签名称枚举
* @param texts 相应内容
*/
void addFieldText(LabelType label, List<String> texts) {
fieldTextMap.get(label.getName()).addAll(texts);
}
/**
* 用于清空字段的内容以避免存储上一次输入的用例
*/
@ -233,4 +252,33 @@ public abstract class Case {
public HashMap<String, ArrayList<String>> getFieldTextMap() {
return fieldTextMap;
}
/**`
* 由于添加与参数相关的数据时需要将关联的字段如步骤及结果都添加至其中
* 若后期关联字段增加则代码量将是成倍的增加故将关联的内容提取出来
* 外部进行添加之后修改关联字段时只需修改该方法即可若传入-1则表示
* 获取xml中该标签下的所有的信息<br>
* 参数表
* <ol>
* <li>步骤</li>
* <li>预期</li>
* </ol>
* @param caseName 读取的用例名称
* @param ids id参数串
*/
void relevanceAddData(String caseName, String...ids) {
//添加步骤
if (ids[0].equals(ALL)) {
addFieldText(LabelType.STEP, getAllLabelText(caseName, LabelType.STEP));
} else {
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, ids[0]));
}
//添加预期
if (ids[0].equals(ALL)) {
addFieldText(LabelType.EXCEPT, getAllLabelText(caseName, LabelType.EXCEPT));
} else {
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, ids[0]));
}
}
}