feat(测试跟踪): 修复测试计划在发送通知时报错导致测试报告状态无法改变,而引起来的检查逻辑重复尝试更新这个测试计划状态的缺陷
--bug=1012609 --user=宋天阳 [测试计划]-确认该测试计划没有任何定时任务-2分钟收到一次通知邮件,报告中链接打开失败 https://www.tapd.cn/55049933/s/1145281
This commit is contained in:
parent
1183cddd71
commit
b17065c3db
|
@ -464,14 +464,14 @@ public class TestPlanReportService {
|
||||||
content = contents.get(0);
|
content = contents.get(0);
|
||||||
}
|
}
|
||||||
boolean hasErrorCase = false;
|
boolean hasErrorCase = false;
|
||||||
if(content!= null){
|
if (content != null) {
|
||||||
//更新接口用例、场景用例的最终执行状态
|
//更新接口用例、场景用例的最终执行状态
|
||||||
if(StringUtils.isNotEmpty(content.getPlanApiCaseReportStruct())){
|
if (StringUtils.isNotEmpty(content.getPlanApiCaseReportStruct())) {
|
||||||
try {
|
try {
|
||||||
List<TestPlanFailureApiDTO> apiTestCases = JSONArray.parseArray(content.getPlanApiCaseReportStruct(),TestPlanFailureApiDTO.class);
|
List<TestPlanFailureApiDTO> apiTestCases = JSONArray.parseArray(content.getPlanApiCaseReportStruct(), TestPlanFailureApiDTO.class);
|
||||||
List<String> reportIdList = new ArrayList<>();
|
List<String> reportIdList = new ArrayList<>();
|
||||||
apiTestCases.forEach( item -> {
|
apiTestCases.forEach(item -> {
|
||||||
if(StringUtils.isNotEmpty(item.getReportId())){
|
if (StringUtils.isNotEmpty(item.getReportId())) {
|
||||||
reportIdList.add(item.getReportId());
|
reportIdList.add(item.getReportId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -488,13 +488,13 @@ public class TestPlanReportService {
|
||||||
}
|
}
|
||||||
dto.setExecResult(execStatus);
|
dto.setExecResult(execStatus);
|
||||||
}
|
}
|
||||||
if(!StringUtils.equalsAnyIgnoreCase( dto.getExecResult(),"success")){
|
if (!StringUtils.equalsAnyIgnoreCase(dto.getExecResult(), "success")) {
|
||||||
hasErrorCase = true;
|
hasErrorCase = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
content.setPlanApiCaseReportStruct(JSONObject.toJSONString(apiTestCases));
|
content.setPlanApiCaseReportStruct(JSONObject.toJSONString(apiTestCases));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error("update test plan api error! " , e.getMessage());
|
LogUtil.error("update test plan api error! ", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotEmpty(content.getPlanScenarioReportStruct())) {
|
if (StringUtils.isNotEmpty(content.getPlanScenarioReportStruct())) {
|
||||||
|
@ -522,14 +522,14 @@ public class TestPlanReportService {
|
||||||
}
|
}
|
||||||
dto.setLastResult(execStatus);
|
dto.setLastResult(execStatus);
|
||||||
dto.setStatus(execStatus);
|
dto.setStatus(execStatus);
|
||||||
if(!StringUtils.equalsAnyIgnoreCase(execStatus,"success")){
|
if (!StringUtils.equalsAnyIgnoreCase(execStatus, "success")) {
|
||||||
hasErrorCase = true;
|
hasErrorCase = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
content.setPlanScenarioReportStruct(JSONObject.toJSONString(scenarioCases));
|
content.setPlanScenarioReportStruct(JSONObject.toJSONString(scenarioCases));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error("update test plan api error! " , e.getMessage());
|
LogUtil.error("update test plan api error! ", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//更新content表对结束日期
|
//更新content表对结束日期
|
||||||
|
@ -538,13 +538,13 @@ public class TestPlanReportService {
|
||||||
testPlanReportContentMapper.updateByExampleSelective(content, contentExample);
|
testPlanReportContentMapper.updateByExampleSelective(content, contentExample);
|
||||||
}
|
}
|
||||||
//计算测试计划状态
|
//计算测试计划状态
|
||||||
if(StringUtils.equalsIgnoreCase(status,TestPlanReportStatus.COMPLETED.name())){
|
if (StringUtils.equalsIgnoreCase(status, TestPlanReportStatus.COMPLETED.name())) {
|
||||||
if(hasErrorCase){
|
if (hasErrorCase) {
|
||||||
testPlanReport.setStatus(TestPlanReportStatus.FAILED.name());
|
testPlanReport.setStatus(TestPlanReportStatus.FAILED.name());
|
||||||
}else {
|
} else {
|
||||||
testPlanReport.setStatus(TestPlanReportStatus.SUCCESS.name());
|
testPlanReport.setStatus(TestPlanReportStatus.SUCCESS.name());
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
testPlanReport.setStatus(status);
|
testPlanReport.setStatus(status);
|
||||||
}
|
}
|
||||||
//更新测试计划并发送通知
|
//更新测试计划并发送通知
|
||||||
|
@ -738,7 +738,8 @@ public class TestPlanReportService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public TestPlanReport update(TestPlanReport report) {
|
public TestPlanReport update(TestPlanReport report) {
|
||||||
if (!report.getIsApiCaseExecuting() && !report.getIsPerformanceExecuting() && !report.getIsScenarioExecuting())
|
testPlanReportMapper.updateByPrimaryKey(report);
|
||||||
|
if (!report.getIsApiCaseExecuting() && !report.getIsPerformanceExecuting() && !report.getIsScenarioExecuting()) {
|
||||||
try {
|
try {
|
||||||
//更新TestPlan状态为完成
|
//更新TestPlan状态为完成
|
||||||
TestPlanWithBLOBs testPlan = testPlanMapper.selectByPrimaryKey(report.getTestPlanId());
|
TestPlanWithBLOBs testPlan = testPlanMapper.selectByPrimaryKey(report.getTestPlanId());
|
||||||
|
@ -749,15 +750,20 @@ public class TestPlanReportService {
|
||||||
if (testPlan != null && StringUtils.equalsAny(report.getTriggerMode(),
|
if (testPlan != null && StringUtils.equalsAny(report.getTriggerMode(),
|
||||||
ReportTriggerMode.MANUAL.name(),
|
ReportTriggerMode.MANUAL.name(),
|
||||||
ReportTriggerMode.API.name(),
|
ReportTriggerMode.API.name(),
|
||||||
ReportTriggerMode.SCHEDULE.name())
|
ReportTriggerMode.SCHEDULE.name()) && !StringUtils.equalsIgnoreCase(report.getStatus(), ExecuteResult.RUNNING.name())
|
||||||
) {
|
) {
|
||||||
//发送通知
|
try {
|
||||||
sendMessage(report, testPlan.getProjectId());
|
//发送通知
|
||||||
|
sendMessage(report, testPlan.getProjectId());
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.error("Send message error: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error(e);
|
LogUtil.error(e.getMessage());
|
||||||
}
|
}
|
||||||
testPlanReportMapper.updateByPrimaryKey(report);
|
}
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -805,16 +811,16 @@ public class TestPlanReportService {
|
||||||
* 测试计划的消息通知配置包括 完成、成功、失败
|
* 测试计划的消息通知配置包括 完成、成功、失败
|
||||||
* 所以发送通知时必定会有"完成"状态的通知
|
* 所以发送通知时必定会有"完成"状态的通知
|
||||||
*/
|
*/
|
||||||
Map<String,String> execStatusEventMap = new HashMap<>();
|
Map<String, String> execStatusEventMap = new HashMap<>();
|
||||||
execStatusEventMap.put(TestPlanReportStatus.COMPLETED.name(),NoticeConstants.Event.COMPLETE);
|
execStatusEventMap.put(TestPlanReportStatus.COMPLETED.name(), NoticeConstants.Event.COMPLETE);
|
||||||
if(StringUtils.equalsIgnoreCase(testPlanReport.getStatus(),TestPlanReportStatus.SUCCESS.name())){
|
if (StringUtils.equalsIgnoreCase(testPlanReport.getStatus(), TestPlanReportStatus.SUCCESS.name())) {
|
||||||
execStatusEventMap.put(testPlanReport.getStatus(),NoticeConstants.Event.EXECUTE_SUCCESSFUL);
|
execStatusEventMap.put(testPlanReport.getStatus(), NoticeConstants.Event.EXECUTE_SUCCESSFUL);
|
||||||
}else if(StringUtils.equalsIgnoreCase(testPlanReport.getStatus(),TestPlanReportStatus.FAILED.name())){
|
} else if (StringUtils.equalsIgnoreCase(testPlanReport.getStatus(), TestPlanReportStatus.FAILED.name())) {
|
||||||
execStatusEventMap.put(testPlanReport.getStatus(),NoticeConstants.Event.EXECUTE_FAILED);
|
execStatusEventMap.put(testPlanReport.getStatus(), NoticeConstants.Event.EXECUTE_FAILED);
|
||||||
}else if(!StringUtils.equalsIgnoreCase(testPlanReport.getStatus(),TestPlanReportStatus.COMPLETED.name())){
|
} else if (!StringUtils.equalsIgnoreCase(testPlanReport.getStatus(), TestPlanReportStatus.COMPLETED.name())) {
|
||||||
execStatusEventMap.put(testPlanReport.getStatus(),NoticeConstants.Event.COMPLETE);
|
execStatusEventMap.put(testPlanReport.getStatus(), NoticeConstants.Event.COMPLETE);
|
||||||
}
|
}
|
||||||
for (Map.Entry<String,String> entry : execStatusEventMap.entrySet()) {
|
for (Map.Entry<String, String> entry : execStatusEventMap.entrySet()) {
|
||||||
String status = entry.getKey();
|
String status = entry.getKey();
|
||||||
String event = entry.getValue();
|
String event = entry.getValue();
|
||||||
NoticeModel noticeModel = NoticeModel.builder()
|
NoticeModel noticeModel = NoticeModel.builder()
|
||||||
|
|
Loading…
Reference in New Issue