完成ExcelRecord类的改造
This commit is contained in:
parent
651ac630f8
commit
1fc2462c44
|
@ -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>
|
||||
|
||||
<!--
|
||||
|
|
|
@ -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 + "']")));
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue