提交 efbe03c3 authored 作者: mry's avatar mry

fix(base): 完成了报告数据的生成

上级 d5b40a4e
...@@ -10,7 +10,7 @@ import lombok.NoArgsConstructor; ...@@ -10,7 +10,7 @@ import lombok.NoArgsConstructor;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class DataBeanMove { public class DataMove {
/** /**
* 前置行动ID组,例如:1,2,3 * 前置行动ID组,例如:1,2,3
......
...@@ -5,7 +5,7 @@ import freemarker.template.Template; ...@@ -5,7 +5,7 @@ import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler; import freemarker.template.TemplateExceptionHandler;
import org.matrix.exception.GlobalException; import org.matrix.exception.GlobalException;
import org.matrix.testNg.web.entity.DataBean; import org.matrix.testNg.web.entity.DataBean;
import org.matrix.testNg.web.entity.DataBeanMove; import org.matrix.testNg.web.entity.DataMove;
import org.matrix.testNg.web.entity.DataBeans; import org.matrix.testNg.web.entity.DataBeans;
import org.matrix.testNg.web.entity.ReportMessage; import org.matrix.testNg.web.entity.ReportMessage;
import org.matrix.util.ReporterUtils; import org.matrix.util.ReporterUtils;
...@@ -39,12 +39,12 @@ public class GenerateReporter { ...@@ -39,12 +39,12 @@ public class GenerateReporter {
Map context = new HashMap(); Map context = new HashMap();
ReporterData reporterData = new ReporterData(); ReporterData reporterData = new ReporterData();
DataBean dataBean = reporterData.testDataBean(); DataBean dataBean = reporterData.testDataBean();
DataBeanMove dataBeanMove = reporterData.testDataBeanMove(); DataMove dataMove = reporterData.testDataBeanMove();
List<DataBeans> dataBeansList = reporterData.testDataBeans(); List<DataBeans> dataBeansList = reporterData.testDataBeans();
// 这里是公共的信息. // 这里是公共的信息.
for (DataBeans bean : dataBeansList) { for (DataBeans bean : dataBeansList) {
context.put("overView", dataBean); context.put("overView", dataBean);
context.put("move", dataBeanMove); context.put("move", dataMove);
if (bean.getResult()) { if (bean.getResult()) {
context.put("pass", dataBeansList); context.put("pass", dataBeansList);
} else { } else {
......
...@@ -5,8 +5,8 @@ import freemarker.template.Template; ...@@ -5,8 +5,8 @@ import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler; import freemarker.template.TemplateExceptionHandler;
import org.matrix.exception.GlobalException; import org.matrix.exception.GlobalException;
import org.matrix.testNg.web.entity.DataBean; import org.matrix.testNg.web.entity.DataBean;
import org.matrix.testNg.web.entity.DataBeanMove;
import org.matrix.testNg.web.entity.DataBeans; import org.matrix.testNg.web.entity.DataBeans;
import org.matrix.testNg.web.entity.DataMove;
import org.matrix.testNg.web.entity.ReportMessage; import org.matrix.testNg.web.entity.ReportMessage;
import org.matrix.util.ReporterUtils; import org.matrix.util.ReporterUtils;
...@@ -39,18 +39,16 @@ public class GenerateReporterJob { ...@@ -39,18 +39,16 @@ public class GenerateReporterJob {
Map context = new HashMap(); Map context = new HashMap();
ReporterDataJob reporterDatajob = new ReporterDataJob(); ReporterDataJob reporterDatajob = new ReporterDataJob();
DataBean dataBean = reporterDatajob.testDataBean(); DataBean dataBean = reporterDatajob.testDataBean();
List<DataBeanMove> dataBeanMoves = reporterDatajob.testDataBeanMove(); List<DataMove> dataMoves = reporterDatajob.testDataBeanMove();
List<DataBeans> dataBeansList = reporterDatajob.testDataBeans(); List<DataBeans> dataBeansList = reporterDatajob.testDataBeans();
// 这里是公共的信息. // 这里是公共的信息.
for (DataBeans bean : dataBeansList) { for (DataBeans bean : dataBeansList) {
context.put("overView", dataBean); context.put("overView", dataBean);
for (DataBeanMove dataBeanMove : dataBeanMoves) { context.put("move", dataMoves);
context.put("move", dataBeanMoves); if (bean.getResult()) {
if (bean.getResult()) { context.put("pass", dataBeansList);
context.put("pass", bean); } else {
} else { context.put("fail", dataBeansList);
context.put("fail", bean);
}
} }
} }
//文件夹不存在的话进行创建 //文件夹不存在的话进行创建
...@@ -70,7 +68,7 @@ public class GenerateReporterJob { ...@@ -70,7 +68,7 @@ public class GenerateReporterJob {
} catch (Exception e) { } catch (Exception e) {
throw new GlobalException(e.getMessage()); throw new GlobalException(e.getMessage());
} finally { } finally {
ReporterUtils.map = new HashMap<>(); ReporterUtils.jobMap = new HashMap<>();
} }
} }
} }
package org.matrix.testNg.web.report; package org.matrix.testNg.web.report;
import org.matrix.testNg.web.entity.DataBean; import org.matrix.testNg.web.entity.DataBean;
import org.matrix.testNg.web.entity.DataBeanMove; import org.matrix.testNg.web.entity.DataMove;
import org.matrix.testNg.web.entity.DataBeans; import org.matrix.testNg.web.entity.DataBeans;
import org.matrix.testNg.web.entity.DataBeansVo; import org.matrix.testNg.web.vo.DataBeansVo;
import org.matrix.util.ReporterUtils; import org.matrix.util.ReporterUtils;
import java.util.List; import java.util.List;
...@@ -40,15 +40,15 @@ public class ReporterData { ...@@ -40,15 +40,15 @@ public class ReporterData {
dataBean.setTotal(passNum + failNum); dataBean.setTotal(passNum + failNum);
//通过率 //通过率
dataBean.setProbability(passNum / (passNum + failNum)); dataBean.setProbability(passNum / (passNum + failNum));
// TODO 时间需要处理 // TODO 时间需要处理,通过率需要处理
return dataBean; return dataBean;
} }
/** /**
* 动作部分 * 动作部分
*/ */
public DataBeanMove testDataBeanMove() { public DataMove testDataBeanMove() {
return ReporterUtils.map.get("dataBeansVo").getDataBeanMove(); return ReporterUtils.map.get("dataBeansVo").getDataMove();
} }
/** /**
......
package org.matrix.testNg.web.report; package org.matrix.testNg.web.report;
import org.matrix.testNg.web.entity.DataBean; import org.matrix.testNg.web.entity.DataBean;
import org.matrix.testNg.web.entity.DataBeanMove;
import org.matrix.testNg.web.entity.DataBeans; import org.matrix.testNg.web.entity.DataBeans;
import org.matrix.testNg.web.entity.DataBeansJobVo; import org.matrix.testNg.web.entity.DataMove;
import org.matrix.testNg.web.vo.DataBeansJobVo;
import org.matrix.testNg.web.vo.DataBeansMoveVo;
import org.matrix.util.ReporterUtils; import org.matrix.util.ReporterUtils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -18,17 +20,20 @@ public class ReporterDataJob { ...@@ -18,17 +20,20 @@ public class ReporterDataJob {
* @return 补全了的所有报告信息 * @return 补全了的所有报告信息
*/ */
public DataBean testDataBean() { public DataBean testDataBean() {
DataBeansJobVo dataBeansJobVo = ReporterUtils.jobMap.get("dataBeansJobVo"); DataBeansJobVo dataBeansJobVo = ReporterUtils.jobMap.get("job");
int passNum = 0; int passNum = 0;
int failNum = 0; int failNum = 0;
// 测试结果汇总数据 // 测试结果汇总数据
DataBean dataBean = dataBeansJobVo.getDataBean(); DataBean dataBean = dataBeansJobVo.getDataBean();
List<DataBeans> dataBeanLists = dataBeansJobVo.getDataBeansList(); List<DataBeansMoveVo> dataBeansMoveVos = dataBeansJobVo.getDataBeansMove();
for (DataBeans dataBeanList : dataBeanLists) { for (DataBeansMoveVo dataBeansMoveVo : dataBeansMoveVos) {
if (dataBeanList.getResult()) { List<DataBeans> dataBeansList = dataBeansMoveVo.getDataBeansList();
passNum += 1; for (DataBeans dataBeans : dataBeansList) {
} else { if (dataBeans.getResult()) {
failNum += 1; passNum += 1;
} else {
failNum += 1;
}
} }
} }
//成功 //成功
...@@ -39,15 +44,21 @@ public class ReporterDataJob { ...@@ -39,15 +44,21 @@ public class ReporterDataJob {
dataBean.setTotal(passNum + failNum); dataBean.setTotal(passNum + failNum);
//通过率 //通过率
dataBean.setProbability(passNum / (passNum + failNum)); dataBean.setProbability(passNum / (passNum + failNum));
// TODO 时间需要处理 // TODO 时间需要处理,通过率需要处理
return dataBean; return dataBean;
} }
/** /**
* 动作部分 * 动作部分
*/ */
public List<DataBeanMove> testDataBeanMove() { public List<DataMove> testDataBeanMove() {
return ReporterUtils.jobMap.get("dataBeansJobVo").getDataBeanMoveList(); List<DataMove> dataMoveList = new ArrayList<>();
List<DataBeansMoveVo> dataBeansMoveVos = ReporterUtils.jobMap.get("job").getDataBeansMove();
for (DataBeansMoveVo dataBeansMoveVo : dataBeansMoveVos) {
DataMove dataMove = dataBeansMoveVo.getDataMove();
dataMoveList.add(dataMove);
}
return dataMoveList;
} }
/** /**
...@@ -56,6 +67,11 @@ public class ReporterDataJob { ...@@ -56,6 +67,11 @@ public class ReporterDataJob {
* @return 报告中细节部分的信息 * @return 报告中细节部分的信息
*/ */
public List<DataBeans> testDataBeans() { public List<DataBeans> testDataBeans() {
return ReporterUtils.jobMap.get("dataBeansJobVo").getDataBeansList(); List<DataBeans> dataBeansList = null;
List<DataBeansMoveVo> dataBeansMoveVos = ReporterUtils.jobMap.get("job").getDataBeansMove();
for (DataBeansMoveVo dataBeansMoveVo : dataBeansMoveVos) {
dataBeansList = dataBeansMoveVo.getDataBeansList();
}
return dataBeansList;
} }
} }
package org.matrix.testNg.web.report; package org.matrix.testNg.web.report;
import org.matrix.testNg.web.TestNg; import org.matrix.testNg.web.TestNg;
import org.matrix.testNg.web.entity.DataBeansJobVo; import org.matrix.testNg.web.vo.DataBeansJobVo;
import org.matrix.testNg.web.entity.DataBeansVo; import org.matrix.testNg.web.vo.DataBeansVo;
import org.matrix.testNg.web.entity.ReportMessage; import org.matrix.testNg.web.entity.ReportMessage;
import org.matrix.util.ReporterUtils; import org.matrix.util.ReporterUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -30,7 +30,7 @@ public class TestNgImpl implements TestNg { ...@@ -30,7 +30,7 @@ public class TestNgImpl implements TestNg {
* 多条用例执行时,报告生成的位置 * 多条用例执行时,报告生成的位置
*/ */
public ReportMessage getReporterUrls(DataBeansJobVo dataBeansJobVo) { public ReportMessage getReporterUrls(DataBeansJobVo dataBeansJobVo) {
ReporterUtils.jobMap.put("dataBeansJobVo", dataBeansJobVo); ReporterUtils.jobMap.put("job", dataBeansJobVo);
GenerateReporterJob generateReporterJob = new GenerateReporterJob(); GenerateReporterJob generateReporterJob = new GenerateReporterJob();
ReportMessage reportMessage = generateReporterJob.generateReport(); ReportMessage reportMessage = generateReporterJob.generateReport();
return reportMessage; return reportMessage;
......
package org.matrix.testNg.web.entity; package org.matrix.testNg.web.vo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.matrix.testNg.web.entity.DataBean;
import java.util.List; import java.util.List;
...@@ -14,9 +15,13 @@ import java.util.List; ...@@ -14,9 +15,13 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
public class DataBeansJobVo { public class DataBeansJobVo {
/**
* 报告公共部分
*/
private DataBean dataBean; private DataBean dataBean;
private List<DataBeanMove> dataBeanMoveList; /**
* 动作对应多个细节部分
private List<DataBeans> dataBeansList; */
private List<DataBeansMoveVo> dataBeansMove;
} }
package org.matrix.testNg.web.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.matrix.testNg.web.entity.DataBeans;
import org.matrix.testNg.web.entity.DataMove;
import java.util.List;
/**
* @author MRY
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataBeansMoveVo {
/**
* 动作部分
*/
private DataMove dataMove;
/**
* 细节部分
*/
private List<DataBeans> dataBeansList;
}
package org.matrix.testNg.web.entity; package org.matrix.testNg.web.vo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.matrix.testNg.web.entity.DataBean;
import org.matrix.testNg.web.entity.DataBeans;
import org.matrix.testNg.web.entity.DataMove;
import java.util.List; import java.util.List;
...@@ -24,7 +27,7 @@ public class DataBeansVo { ...@@ -24,7 +27,7 @@ public class DataBeansVo {
/** /**
* 动作部分 * 动作部分
*/ */
private DataBeanMove dataBeanMove; private DataMove dataMove;
/** /**
* 细节部分 * 细节部分
......
package org.matrix.util; package org.matrix.util;
import org.matrix.actuators.usecase.TestDataExecuteResult; import org.matrix.actuators.usecase.TestCaseExecuteResult;
import org.matrix.testNg.web.entity.DataBeansJobVo; import org.matrix.testNg.web.vo.DataBeansJobVo;
import org.matrix.testNg.web.entity.DataBeansVo; import org.matrix.testNg.web.vo.DataBeansVo;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -13,9 +13,9 @@ import java.util.Map; ...@@ -13,9 +13,9 @@ import java.util.Map;
*/ */
public class ReporterUtils { public class ReporterUtils {
public static Map<Long, Map<Long, List<TestDataExecuteResult>>> userResultMap = new HashMap<>(); public static Map<Long, Map<Long, List<TestCaseExecuteResult>>> userResultMap = new HashMap<>();
public static Map<Long, List<TestDataExecuteResult>> resultMap = new HashMap<>(); public static Map<Long, List<TestCaseExecuteResult>> resultMap = new HashMap<>();
public static Map<String, DataBeansVo> map = new HashMap<>(); public static Map<String, DataBeansVo> map = new HashMap<>();
......
...@@ -86,25 +86,25 @@ ...@@ -86,25 +86,25 @@
<th>用例通过率</th> <th>用例通过率</th>
</tr> </tr>
<tr> <tr>
<td>${overView.total}</td><#--用例总数--> <td>${overView.total!}</td><#--用例总数-->
<td>${overView.passNum}</td><#--执行通过--> <td>${overView.passNum!}</td><#--执行通过-->
<td>${overView.failNum}</td><#--执行失败--> <td>${overView.failNum!}</td><#--执行失败-->
<td>${overView.allTime}</td><#--执行时间(s)--> <td>${overView.allTime!}</td><#--执行时间(s)-->
<td>${overView.probability}</td><#--用例通过率--> <td>${overView.probability!}</td><#--用例通过率-->
</tr> </tr>
</table> </table>
<br/><br/> <br/><br/>
<h2>Move</h2> <h2>Move</h2>
<table id="moveAction" class="tabNoBorder"> <table id="move" class="tabNoBorder">
<tr class="columnHeadings"> <tr class="columnHeadings">
<th>前置动作</th> <th>前置动作</th>
<th>中置动作</th> <th>中置动作</th>
<th>后置动作</th> <th>后置动作</th>
</tr> </tr>
<tr> <tr>
<td>${move.moveBefore}</td><#--用例总数--> <td>${move.moveBefore!无}</td><#--用例总数-->
<td>${move.moveAfterCase}</td><#--未执行用例数--> <td>${move.moveAfterCase!无}</td><#--未执行用例数-->
<td>${move.moveAfterTest}</td><#--执行通过--> <td>${move.moveAfterTest!无}</td><#--执行通过-->
</tr> </tr>
</table> </table>
<br/><br/> <br/><br/>
...@@ -121,35 +121,38 @@ ...@@ -121,35 +121,38 @@
<th>结果信息</th> <th>结果信息</th>
</tr> </tr>
<#assign caseNo = 0> <#assign caseNo = 0>
<#list fail as failCase> <#if fail ??>
<tr> <#list fail as failCase>
<#assign caseNo=caseNo+1> <tr>
<td>${caseNo}</td><#--编号--> <#assign caseNo=caseNo+1>
<td>${failCase.testCaseName!}</td><#--用例名称--> <td>${caseNo}</td><#--编号-->
<td>${failCase.type!}</td><#--用例类型--> <td>${failCase.testCaseName!'无'}</td><#--用例名称-->
<td>${failCase.detail!}</td><#--详细参数--> <td>${failCase.type!'无'}</td><#--用例类型-->
<td>${failCase.description!}</td><#--用例描述--> <td>${failCase.detail!'无'}</td><#--详细参数-->
<td>${failCase.result?c}</td> <td>${failCase.description!'无'}</td><#--用例描述-->
<td>${failCase.duration!}</td><#--<th>执行时间(s)</th>--> <td>${failCase.result?c}</td>
<td>${failCase.resultMessage!}</td> <td>${failCase.duration!'无'}</td><#--<th>执行时间(s)</th>-->
</tr> <td>${failCase.resultMessage!'无'}</td>
</#list> </tr>
<#list pass as passCase> </#list>
<tr> <#else>
<#assign caseNo=caseNo+1> </#if>
<td>${caseNo}</td><#--编号--> <#if pass ??>
<td>${passCase.testCaseName!}</td><#--用例名称--> <#list pass as passCase>
<td>${passCase.type!}</td><#--用例类型--> <tr>
<td>${passCase.detail!}</td><#--详细参数--> <#assign caseNo=caseNo+1>
<td>${passCase.moveBefore!}</td><#--前置动作--> <td>${caseNo}</td><#--编号-->
<td>${passCase.moveAfterCase!}</td><#--中间动作--> <td>${passCase.testCaseName!"无"}</td><#--用例名称-->
<td>${passCase.moveAfterTest!}</td><#--后置动作--> <td>${passCase.type!'无'}</td><#--用例类型-->
<td>${passCase.description!}</td><#--用例描述--> <td>${passCase.detail!'无'}</td><#--详细参数-->
<td>${passCase.result?c}</td> <td>${passCase.description!'无'}</td><#--用例描述-->
<td>${passCase.duration!}</td><#--执行时间(s)--> <td>${passCase.result?c}</td>
<td>${passCase.resultMessage!}</td><#--结果信息--> <td>${passCase.duration!'无'}</td><#--执行时间(s)-->
</tr> <td>${passCase.resultMessage!'无'}</td><#--结果信息-->
</#list> </tr>
</#list>
<#else>
</#if>
</table> </table>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -80,39 +80,36 @@ ...@@ -80,39 +80,36 @@
<table id="summary" class="tabNoBorder"> <table id="summary" class="tabNoBorder">
<tr class="columnHeadings"> <tr class="columnHeadings">
<th>用例总数</th> <th>用例总数</th>
<th>未执行用例数</th>
<th>执行通过</th> <th>执行通过</th>
<th>执行失败</th> <th>执行失败</th>
<th>跳过用例数</th>
<th>执行时间(s)</th> <th>执行时间(s)</th>
<th>用例通过率</th> <th>用例通过率</th>
</tr> </tr>
<tr> <tr>
<td>${overView.allTestsSize}</td><#--用例总数--> <td>${overView.total!}</td><#--用例总数-->
<td>${overView.excludeTestsSize}</td><#--未执行用例数--> <td>${overView.passNum!}</td><#--执行通过-->
<td>${overView.passedTestsSize}</td><#--执行通过--> <td>${overView.failNum!}</td><#--执行失败-->
<td>${overView.failedTestsSize}</td><#--执行失败--> <td>${overView.allTime!}</td><#--执行时间(s)-->
<td>${overView.skippedTestsSize}</td><#--跳过用例数--> <td>${overView.probability!}</td><#--用例通过率-->
<td>${overView.testsTime}</td><#--执行时间(s)-->
<td>${overView.passPercent}</td><#--用例通过率-->
</tr> </tr>
</table> </table>
<br/><br/> <br/><br/>
<h2>Detail</h2> <table id="Move" class="tabNoBorder">
<table class="tabNoBorder"> <h2>Move</h2>
<tr class="columnHeadings"> <table id="move" class="tabNoBorder">
<th>前置动作</th> <#list move as moveCase>
<th>中置动作</th> <tr class="columnHeadings">
<th>后置动作</th> <th>前置动作</th>
</tr> <th>中置动作</th>
<#list move as moveCase> <th>后置动作</th>
<tr> </tr>
<td>${moveCase.moveBefore}</td><#--用例总数--> <tr>
<td>${moveCase.moveAfterCase}</td><#--未执行用例数--> <td>${moveCase.moveBefore!}</td><#--用例总数-->
<td>${moveCase.moveAfterTest}</td><#--执行通过--> <td>${moveCase.moveAfterCase!}</td><#--未执行用例数-->
</tr> <td>${moveCase.moveAfterTest!}</td><#--执行通过-->
</#list> </tr>
<table class="aaa"> </table>
<table id="Detail" class="tabNoBorder">
<tr class="columnHeadings"> <tr class="columnHeadings">
<th>编号</th> <th>编号</th>
<th>用例名称</th> <th>用例名称</th>
...@@ -124,31 +121,38 @@ ...@@ -124,31 +121,38 @@
<th>结果信息</th> <th>结果信息</th>
</tr> </tr>
<#assign caseNo = 0> <#assign caseNo = 0>
<#list fail as failCase> <#if fail ??>
<tr> <#list fail as failCase>
<#assign caseNo=caseNo+1> <tr>
<td>${caseNo}</td><#--编号--> <#assign caseNo=caseNo+1>
<td>${failCase.testCaseName!}</td><#--用例名称--> <td>${caseNo}</td><#--编号-->
<td>${failCase.type!}</td><#--用例类型--> <td>${failCase.testCaseName!}</td><#--用例名称-->
<td>${failCase.detail!}</td><#--详细参数--> <td>${failCase.type!}</td><#--用例类型-->
<td>${failCase.description!}</td><#--用例描述--> <td>${failCase.detail!}</td><#--详细参数-->
<td>${failCase.result}</td> <td>${failCase.description!}</td><#--用例描述-->
<td>${failCase.duration!}</td><#--<th>执行时间(s)</th>--> <td>${failCase.result?c}</td>
<td>${failCase.resultMessage!}</td> <td>${failCase.duration!}</td><#--<th>执行时间(s)</th>-->
</tr> <td>${failCase.resultMessage!}</td>
</#list> </tr>
<#list pass as passCase> </#list>
<tr> <#else >
<#assign caseNo=caseNo+1> </#if>
<td>${caseNo}</td><#--编号--> <#if pass??>
<td>${passCase.testCaseName!}</td><#--用例名称--> <#list pass as passCase>
<td>${passCase.type!}</td><#--用例类型--> <tr>
<td>${passCase.detail!}</td><#--详细参数--> <#assign caseNo=caseNo+1>
<td>${passCase.description}</td><#--用例描述--> <td>${caseNo}</td><#--编号-->
<td>${passCase.result}</td> <td>${passCase.testCaseName!}</td><#--用例名称-->
<td>${passCase.duration!}</td><#--执行时间(s)--> <td>${passCase.type!}</td><#--用例类型-->
<td>${passCase.resultMessage!}</td><#--结果信息--> <td>${passCase.detail!}</td><#--详细参数-->
</tr> <td>${passCase.description!}</td><#--用例描述-->
<td>${passCase.result?c}</td>
<td>${passCase.duration!}</td><#--执行时间(s)-->
<td>${passCase.resultMessage!}</td><#--结果信息-->
</tr>
</#list>
<#else >
</#if>
</#list> </#list>
</table> </table>
</table> </table>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论