完成ExcelRecord类的改造

This commit is contained in:
彭宇琦 2020-08-31 12:58:45 +08:00
parent 651ac630f8
commit 1fc2462c44
6 changed files with 57 additions and 31 deletions

View File

@ -44,10 +44,10 @@
<column id="id" name="序号" wide="8" align="center"/>
<column id="class_name" name="类名" wide="25" align="left"/>
<column id="method_name" name="方法名" wide="15" align="left"/>
<column id="error_step" name="错误步骤" wide="25" align="left"/>
<column id="error_class" name="异常类" wide="25" align="left"/>
<column id="error_information" name="异常信息" wide="25" align="left"/>
<column id="screenshot_position" name="截图位置" wide="25" align="left"/>
<column id="error_step" name="错误步骤" wide="25" align="left" index='true' row_text='1'/>
<column id="error_class" name="异常类" wide="25" align="left" index='true' row_text='1'/>
<column id="error_information" name="异常信息" wide="25" align="left" index='true' row_text='1'/>
<column id="screenshot_position" name="截图位置" wide="25" align="left" index='true' row_text='1'/>
</sheet>
<!--

View File

@ -311,8 +311,13 @@ public abstract class AbstractWriteExcel<T extends AbstractWriteExcel<T>> {
}
//还原下标
/*
System.out.print(nowSheetName + " = ");
System.out.print(fieldMap.get(nowSheetName).get(field).name + " = ");
System.out.println(fieldMap.get(nowSheetName).get(field).content.size());
*/
index = getPoiIndex(fieldMap.get(nowSheetName).get(field).content.size(), index);
if (fieldMap.get(nowSheetName).get(field).datas.size() != 0) {
//查找数据有效性若当前字段存在数据有效性则将数据有效性转义若添加的字段无法转义则存储原内容
contents = dataValidityChange(contents, fieldMap.get(nowSheetName).get(field));
@ -322,7 +327,7 @@ public abstract class AbstractWriteExcel<T extends AbstractWriteExcel<T>> {
// 将字段内容写入fieldMap若插入的下标不正确则不做任何处理
try {
fieldMap.get(nowSheetName).get(field).content.addAll(index, Arrays.asList(contents));
fieldMap.get(nowSheetName).get(field).content.addAll(fieldMap.get(nowSheetName).get(field).content.size() == 0 ? 0 : index + 1, Arrays.asList(contents));
} catch (Exception e) {
}
@ -387,21 +392,7 @@ public abstract class AbstractWriteExcel<T extends AbstractWriteExcel<T>> {
/**
* 用于结束一条用例写作的标志调用该方法后将结束一条用例的编写 该方法以下的添加用例内容的方法均为编辑另一条用例
*/
@SuppressWarnings("unchecked")
public FieldMark end() {
/*
// 写入到caseXml中
// 获取所有的sheet标签 并筛选出name属性为sheetName的标签
List<Element> sheetList = ((List<Element>) (contentXml.getRootElement().elements("sheet"))).stream()
.filter(e -> e.attributeValue("name").equals(sheetName)).collect(Collectors.toList());
Element sheetElement = null;
// 判断是否存在sheet标签若存在则直接获筛选后的第一个数据若不存在则创建
if (sheetList.size() != 0) {
sheetElement = sheetList.get(0);
} else {
sheetElement = contentXml.getRootElement().addElement("sheet").addAttribute("name", sheetName);
}
*/
if (writeSheetNameList.isEmpty()) {
throw new IncorrectIndexException("当前不存在需要写入的sheet内容");
}
@ -411,14 +402,17 @@ public abstract class AbstractWriteExcel<T extends AbstractWriteExcel<T>> {
// 创建case标签
writeSheetNameList.forEach(sheetName -> {
// 写入到caseXml中
// 获取所有的sheet标签 并筛选出name属性为sheetName的标签
Element sheetElement = null;
// 通过xpath查询到相应的sheet标签
String finSheetXpath = "//sheet[@name='" + sheetName + "']";
Element sheetElement = (Element) (contentXml.selectSingleNode(finSheetXpath));
/*
for (Element element : ((List<Element>) (contentXml.getRootElement().elements("sheet")))) {
if (element.attributeValue("name").equals(sheetName)) {
sheetElement = element;
break;
}
}
*/
// 判断是否存在sheet标签若不存在则创建相应的标签
if (sheetElement == null) {
@ -453,9 +447,9 @@ public abstract class AbstractWriteExcel<T extends AbstractWriteExcel<T>> {
}
}
});
// 清空fieldMap中的内容
clearFieldContent();
clearFieldContent(sheetName);
// 将字段常值设置入fieldMap中若抛出异常则不进行处理
/*
if (constValueMap != null && constValueMap.size() != 0) {
@ -806,12 +800,10 @@ public abstract class AbstractWriteExcel<T extends AbstractWriteExcel<T>> {
/**
* 清空fieldMap内的存储字段信息不清除字段
*/
private void clearFieldContent() {
fieldMap.forEach((sheetName, sheetFieldMap) -> {
sheetFieldMap.forEach((fieldId, field) -> {
private void clearFieldContent(String sheetName) {
fieldMap.get(sheetName).forEach((fieldId, field) -> {
field.clearContent();
});
});
}
/**
@ -1431,7 +1423,6 @@ public abstract class AbstractWriteExcel<T extends AbstractWriteExcel<T>> {
return null;
}
*/
return ((Element) (contentXml.selectSingleNode("//sheet[@name='" + sheetName +"']/case[@id='" + uuid + "']")));
}

View File

@ -105,9 +105,11 @@ public class ExcelRecord extends AbstractWriteExcel<ExcelRecord> {
/**
* 用于记录执行开始时间记录结束时会写入相应的结束时间
*/
public void reckonByTime() {
public ExcelRecord reckonByTime() {
//若设定当前状态为开始记录状态则存储当前的时间戳
startTime = System.currentTimeMillis();
return this;
}
/**
@ -182,6 +184,7 @@ public class ExcelRecord extends AbstractWriteExcel<ExcelRecord> {
* @return 类本身
*/
public ExcelRecord exception(Exception exception, File screenshotFile) {
errorScreenhotFile = screenshotFile;
return exception(exception)
.switchSheet("错误记录")
.addContent("screenshot_position", screenshotFile.getPath());

View File

@ -105,4 +105,36 @@ public class ExcelRecordTest {
public void caseExpectTest() {
er.caseExpect("测试用例预期1", "测试用例预期2");
}
@Test
public void addAllContentTest() {
er.caseTitle("测试成功运行标题")
.caseStep("测试第1步")
.caseExpect("测试第1预期")
.caseCondition("前置条件1")
.runStep("实际第1步")
.runStep("实际第2步")
.runStep("实际第3步", "实际第4步")
.runResult("实际结果1", false)
.runResult("实际结果2", true)
.runMark("实际备注")
.runScreenshot(imageFile)
.end();
er.reckonByTime()
.caseTitle("测试失败运行标题")
.caseStep("测试第1步")
.caseExpect("测试第1预期")
.caseCondition("前置条件1")
.runStep("实际第1步")
.runStep("实际第2步", "实际第3步")
.exception(new NullPointerException("此时抛出了NullPointerException异常"), imageFile)
.runStep("实际第4步")
.runStep("实际第5步")
.exception(new RecordStateException("这里出现了RecordStateException异常"))
.runResult("实际结果1", false)
.runResult("实际结果2", true)
.runMark("实际备注")
.runScreenshot(imageFile);
}
}

File diff suppressed because one or more lines are too long