From 10fd28dc579c440f6695c51e5a15f135292302c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=98=B1=E6=B6=B5?= Date: Tue, 18 Mar 2025 08:42:06 +0800 Subject: [PATCH] report --- .../test/controller/TestCaseController.java | 3 +- .../controller/TestCaseResultController.java | 8 + .../test/test/domain/vo/TestCaseResultVO.java | 11 + .../test/test/service/ITestCaseService.java | 2 +- .../test/service/impl/TaskManagerService.java | 8 +- .../service/impl/TestCaseServiceImpl.java | 14 +- test-ui/src/api/test/caseStep.js | 9 + test-ui/src/views/test/case/index.vue | 14 +- test-ui/src/views/test/case/report/index.vue | 197 ++++++------------ 9 files changed, 111 insertions(+), 155 deletions(-) create mode 100644 test-test/src/main/java/com/test/test/domain/vo/TestCaseResultVO.java diff --git a/test-test/src/main/java/com/test/test/controller/TestCaseController.java b/test-test/src/main/java/com/test/test/controller/TestCaseController.java index f40bb5b..df7f278 100644 --- a/test-test/src/main/java/com/test/test/controller/TestCaseController.java +++ b/test-test/src/main/java/com/test/test/controller/TestCaseController.java @@ -87,7 +87,6 @@ public class TestCaseController extends BaseController { @PostMapping("/run") public AjaxResult run(@RequestBody IDQO qo) { log.info("执行用例 id:{}, jmeterHomePath:{}", qo.getId(), jmeterHomePath); - testCaseService.executeTestCaseById(qo.getId(), jmeterHomePath); - return toAjax(true); + return success(testCaseService.executeTestCaseById(qo.getId(), jmeterHomePath)); } } diff --git a/test-test/src/main/java/com/test/test/controller/TestCaseResultController.java b/test-test/src/main/java/com/test/test/controller/TestCaseResultController.java index 382a73c..0e11980 100644 --- a/test-test/src/main/java/com/test/test/controller/TestCaseResultController.java +++ b/test-test/src/main/java/com/test/test/controller/TestCaseResultController.java @@ -2,6 +2,7 @@ package com.test.test.controller; import com.test.common.core.controller.BaseController; import com.test.common.core.domain.AjaxResult; +import com.test.test.domain.TestCaseResult; import com.test.test.domain.qo.IDQO; import com.test.test.service.ITestCaseResultService; import org.springframework.beans.factory.annotation.Autowired; @@ -28,4 +29,11 @@ public class TestCaseResultController extends BaseController { return success(testCaseResultService.selectTestCaseResultById(qo.getId())); } + + @GetMapping("/list") + public AjaxResult getList(@RequestParam String sid) { + TestCaseResult testCaseResult = new TestCaseResult(); + testCaseResult.setCaseSid(sid); + return success(testCaseResultService.selectTestCaseResultList(testCaseResult)); + } } diff --git a/test-test/src/main/java/com/test/test/domain/vo/TestCaseResultVO.java b/test-test/src/main/java/com/test/test/domain/vo/TestCaseResultVO.java new file mode 100644 index 0000000..294a1d5 --- /dev/null +++ b/test-test/src/main/java/com/test/test/domain/vo/TestCaseResultVO.java @@ -0,0 +1,11 @@ +package com.test.test.domain.vo; + +import com.test.test.domain.TestCaseResult; +import com.test.test.domain.TestCaseStep; +import lombok.Data; + +@Data +public class TestCaseResultVO { + TestCaseStep step; + TestCaseResult result; +} diff --git a/test-test/src/main/java/com/test/test/service/ITestCaseService.java b/test-test/src/main/java/com/test/test/service/ITestCaseService.java index c79ebcc..ef2a598 100644 --- a/test-test/src/main/java/com/test/test/service/ITestCaseService.java +++ b/test-test/src/main/java/com/test/test/service/ITestCaseService.java @@ -68,5 +68,5 @@ public interface ITestCaseService * @param jmeterHomePath jmeter安装路径 * @return 是否成功 */ - public boolean executeTestCaseById(Long id, String jmeterHomePath); + public String executeTestCaseById(Long id, String jmeterHomePath); } diff --git a/test-test/src/main/java/com/test/test/service/impl/TaskManagerService.java b/test-test/src/main/java/com/test/test/service/impl/TaskManagerService.java index 40de1a5..391df43 100644 --- a/test-test/src/main/java/com/test/test/service/impl/TaskManagerService.java +++ b/test-test/src/main/java/com/test/test/service/impl/TaskManagerService.java @@ -139,18 +139,18 @@ public class TaskManagerService { try { // 测试用例执行逻辑 log.info("Executing test case {} for task {}", testCaseId, taskId); - boolean result = testCaseService.executeTestCaseById(testCaseId, jmeterHomePath); - if (!result && retry == 0) { + String result = testCaseService.executeTestCaseById(testCaseId, jmeterHomePath); + if (result==null && retry == 0) { if (retryCount != null && retryCount > 0) { for (int i = 0; i < retryCount; i++) { result = testCaseService.executeTestCaseById(testCaseId, jmeterHomePath); - if (result) { + if (result!=null) { break; } } } } - return result; + return result!=null; } catch (Exception e) { log.error("Test case {} for task {} failed: ", testCaseId, taskId, e); return false; diff --git a/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java b/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java index 89424fe..ba51654 100644 --- a/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java +++ b/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java @@ -135,11 +135,11 @@ public class TestCaseServiceImpl implements ITestCaseService * @return 是否成功 */ @Override - public boolean executeTestCaseById(Long id, String jmeterHomePath) { + public String executeTestCaseById(Long id, String jmeterHomePath) { TestCase testCase = this.selectTestCaseById(id); if (testCase == null || "2".equals(testCase.getDelFlag())) { log.error("用例计划已被删除,不能执行!"); - return false; + return null; } TestCaseLog testCaseLog = new TestCaseLog(); testCaseLog.setCaseId(id); @@ -157,7 +157,7 @@ public class TestCaseServiceImpl implements ITestCaseService testCaseLog.setOperDetail("失败"); testCaseLogMapper.insertTestCaseLog(testCaseLog); log.error("用例步骤:{}执行失败!", testCaseStep.getName()); - return false; + return null; } } else if (testCaseStep.getType() == 2L) { // 数据库接口处理 @@ -166,7 +166,7 @@ public class TestCaseServiceImpl implements ITestCaseService testCaseLog.setOperDetail("失败"); testCaseLogMapper.insertTestCaseLog(testCaseLog); log.error("数据源用例步骤:{}执行失败!", testCaseStep.getName()); - return false; + return null; } } else if (testCaseStep.getType() == 3L) { // 循环节点处理 @@ -175,7 +175,7 @@ public class TestCaseServiceImpl implements ITestCaseService testCaseLog.setOperDetail("失败"); testCaseLogMapper.insertTestCaseLog(testCaseLog); log.error("循环用例步骤:{}执行失败!", testCaseStep.getName()); - return false; + return null; } } else if (testCaseStep.getType() == 4L) { // 轮询节点处理 @@ -184,7 +184,7 @@ public class TestCaseServiceImpl implements ITestCaseService testCaseLog.setOperDetail("失败"); testCaseLogMapper.insertTestCaseLog(testCaseLog); log.error("轮询用例步骤:{}执行失败!", testCaseStep.getName()); - return false; + return null; } } else { log.error("错误的用例步骤类型!"); @@ -192,7 +192,7 @@ public class TestCaseServiceImpl implements ITestCaseService } testCaseLog.setOperDetail("成功"); testCaseLogMapper.insertTestCaseLog(testCaseLog); - return true; + return caseSid; } /** diff --git a/test-ui/src/api/test/caseStep.js b/test-ui/src/api/test/caseStep.js index d9091a2..d262041 100644 --- a/test-ui/src/api/test/caseStep.js +++ b/test-ui/src/api/test/caseStep.js @@ -54,3 +54,12 @@ export function delCaseStep(id) { data: {id} }) } + +// 查询步骤日志详细 +export function getCaseResult(sid) { + return request({ + url: '/test/testCaseStepResult/list', + method: 'get', + params: {sid: sid} + }) +} diff --git a/test-ui/src/views/test/case/index.vue b/test-ui/src/views/test/case/index.vue index 92551e2..49795e8 100644 --- a/test-ui/src/views/test/case/index.vue +++ b/test-ui/src/views/test/case/index.vue @@ -22,19 +22,26 @@ + +
+ +
+