From 9c199766b06b839098d313ab6731d0710c496369 Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Wed, 23 Dec 2020 14:38:36 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E8=AE=A1?= =?UTF-8?q?=E5=88=92-=E7=BB=9F=E8=AE=A1=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReportResultAdvancedChartComponent.java | 60 +++++ .../TestCaseReportAdvanceStatusResultDTO.java | 12 + .../track/plan/view/TestPlanView.vue | 4 + .../TemplateComponent/TemplateComponent.vue | 8 +- .../TestResultAdvanceChartComponent.vue | 144 ++++++++++ .../TestCaseStatisticsReportView.vue | 252 ++++++++++++++++++ frontend/src/business/components/xpack | 2 +- 7 files changed, 479 insertions(+), 3 deletions(-) create mode 100644 backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java create mode 100644 backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java create mode 100644 frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue create mode 100644 frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java new file mode 100644 index 0000000000..1a0817ce65 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java @@ -0,0 +1,60 @@ +package io.metersphere.track.domain; + +import io.metersphere.commons.constants.TestPlanTestCaseStatus; +import io.metersphere.track.dto.TestCaseReportMetricDTO; +import io.metersphere.track.dto.TestCaseReportStatusResultDTO; +import io.metersphere.track.dto.TestPlanCaseDTO; +import io.metersphere.track.dto.TestPlanDTO; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ReportResultChartComponent extends ReportComponent { + Map reportStatusResultMap = new HashMap<>(); + + public ReportResultChartComponent(TestPlanDTO testPlan) { + super(testPlan); + componentId = "3"; + } + + + @Override + public void readRecord(TestPlanCaseDTO testCase) { + getStatusResultMap(reportStatusResultMap, testCase); + } + + @Override + public void afterBuild(TestCaseReportMetricDTO testCaseReportMetric) { + testCaseReportMetric.setExecuteResult(getReportStatusResult()); + } + + private List getReportStatusResult() { + List reportStatusResult = new ArrayList<>(); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Pass.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Failure.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Blocking.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Skip.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Underway.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Prepare.name()); + return reportStatusResult; + } + + private void addToReportStatusResultList(List reportStatusResultList, String status) { + if (reportStatusResultMap.get(status) != null) { + reportStatusResultList.add(reportStatusResultMap.get(status)); + } + } + + private void getStatusResultMap(Map reportStatusResultMap, TestPlanCaseDTO testCase) { + TestCaseReportStatusResultDTO statusResult = reportStatusResultMap.get(testCase.getStatus()); + if (statusResult == null) { + statusResult = new TestCaseReportStatusResultDTO(); + statusResult.setStatus(testCase.getStatus()); + statusResult.setCount(0); + } + statusResult.setCount(statusResult.getCount() + 1); + reportStatusResultMap.put(testCase.getStatus(), statusResult); + } +} diff --git a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java new file mode 100644 index 0000000000..ea29555e7c --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java @@ -0,0 +1,12 @@ +package io.metersphere.track.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TestCaseReportStatusResultDTO { + private String status; + private Integer count; +} + diff --git a/frontend/src/business/components/track/plan/view/TestPlanView.vue b/frontend/src/business/components/track/plan/view/TestPlanView.vue index 88124974bb..70b0a19033 100644 --- a/frontend/src/business/components/track/plan/view/TestPlanView.vue +++ b/frontend/src/business/components/track/plan/view/TestPlanView.vue @@ -14,11 +14,13 @@ class="el-menu-demo header-menu" mode="horizontal" @select="handleSelect"> 功能测试用例 接口测试用例 + 报告统计 + @@ -35,10 +37,12 @@ import MsTestPlanHeaderBar from "./comonents/head/TestPlanHeaderBar"; import TestPlanFunctional from "./comonents/functional/TestPlanFunctional"; import TestPlanApi from "./comonents/api/TestPlanApi"; + import TestCaseStatisticsReportView from "./comonents/report/statistics/TestCaseStatisticsReportView"; export default { name: "TestPlanView", components: { + TestCaseStatisticsReportView, TestPlanApi, TestPlanFunctional, MsTestPlanHeaderBar, diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue index a43d582dae..114fc20ca9 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue @@ -5,7 +5,8 @@
- + + @@ -15,7 +16,8 @@
- + + @@ -32,10 +34,12 @@ import FailureResultComponent from "./FailureResultComponent"; import DefectListComponent from "./DefectListComponent"; import html2canvas from 'html2canvas'; + import TestResultAdvanceChartComponent from "./TestResultAdvanceChartComponent"; export default { name: "TemplateComponent", components: { + TestResultAdvanceChartComponent, FailureResultComponent,DefectListComponent, RichTextComponent, TestResultChartComponent, TestResultComponent, BaseInfoComponent}, props: { diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue new file mode 100644 index 0000000000..a913852b38 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue b/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue new file mode 100644 index 0000000000..27bdee8af1 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue @@ -0,0 +1,252 @@ + + +cd + + diff --git a/frontend/src/business/components/xpack b/frontend/src/business/components/xpack index a22a3005d9..010ad7a5f0 160000 --- a/frontend/src/business/components/xpack +++ b/frontend/src/business/components/xpack @@ -1 +1 @@ -Subproject commit a22a3005d9bd254793fcf634d72539cbdf31be3a +Subproject commit 010ad7a5f072a5e9d368c756a2473bbd20781433 From 847585e427a8a619aad93fc2496dbd60e23c4d14 Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Wed, 23 Dec 2020 14:40:31 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E8=AE=A1?= =?UTF-8?q?=E5=88=92-=E6=8A=A5=E5=91=8A=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../track/Factory/ReportComponentFactory.java | 3 +- .../track/controller/TestPlanController.java | 5 + .../ReportResultAdvancedChartComponent.java | 95 ++++++++++---- .../domain/ReportResultChartComponent.java | 2 +- .../TestCaseReportAdvanceStatusResultDTO.java | 9 +- .../track/dto/TestCaseReportMetricDTO.java | 3 +- .../track/service/TestPlanService.java | 117 ++++++++++++++---- 7 files changed, 179 insertions(+), 55 deletions(-) diff --git a/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java b/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java index cf0f0e83a7..15793efd0a 100644 --- a/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java +++ b/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java @@ -15,7 +15,8 @@ public class ReportComponentFactory { } else if (StringUtils.equals("2", componentId)) { return new ReportResultComponent(testPlan); } else if (StringUtils.equals("3", componentId)) { - return new ReportResultChartComponent(testPlan); + return new ReportResultAdvancedChartComponent(testPlan); +// return new ReportResultChartComponent(testPlan); } else if (StringUtils.equals("4", componentId)) { return new ReportFailureResultComponent(testPlan); } diff --git a/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java b/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java index 5e633c46f3..f6dba70cdd 100644 --- a/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java +++ b/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java @@ -113,6 +113,11 @@ public class TestPlanController { return testPlanService.getMetric(planId); } + @GetMapping("/get/statistics/metric/{planId}") + public TestCaseReportMetricDTO getStatisticsMetric(@PathVariable String planId) { + return testPlanService.getStatisticsMetric(planId); + } + @GetMapping("/project/name/{planId}") public String getProjectNameByPlanId(@PathVariable String planId) { return testPlanService.getProjectNameByPlanId(planId); diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java index 1a0817ce65..e81697ce3d 100644 --- a/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java +++ b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java @@ -1,28 +1,48 @@ package io.metersphere.track.domain; +import io.metersphere.api.dto.automation.ApiScenarioDTO; +import io.metersphere.api.dto.definition.TestPlanApiCaseDTO; +import io.metersphere.commons.constants.APITestStatus; import io.metersphere.commons.constants.TestPlanTestCaseStatus; -import io.metersphere.track.dto.TestCaseReportMetricDTO; -import io.metersphere.track.dto.TestCaseReportStatusResultDTO; -import io.metersphere.track.dto.TestPlanCaseDTO; -import io.metersphere.track.dto.TestPlanDTO; +import io.metersphere.track.dto.*; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -public class ReportResultChartComponent extends ReportComponent { - Map reportStatusResultMap = new HashMap<>(); +public class ReportResultAdvancedChartComponent extends ReportComponent { + Map functionalStatusResultMap = new HashMap<>(); + Map apiStatusResultMap = new HashMap<>(); + Map scenarioStatusResultMap = new HashMap<>(); - public ReportResultChartComponent(TestPlanDTO testPlan) { + private static Map apiResultMap = new HashMap<>(); + private static Map scenarioResultMap = new HashMap<>(); + + static { + apiResultMap.put("success", TestPlanTestCaseStatus.Pass.name()); + apiResultMap.put("error", TestPlanTestCaseStatus.Failure.name()); + scenarioResultMap.put(APITestStatus.Success.name(), TestPlanTestCaseStatus.Pass.name()); + scenarioResultMap.put(APITestStatus.Error.name(), TestPlanTestCaseStatus.Failure.name()); + } + + public ReportResultAdvancedChartComponent(TestPlanDTO testPlan) { super(testPlan); componentId = "3"; } - @Override public void readRecord(TestPlanCaseDTO testCase) { - getStatusResultMap(reportStatusResultMap, testCase); + getStatusResultMap(functionalStatusResultMap, testCase.getStatus()); + } + + public void readRecord(TestPlanApiCaseDTO testCase) { + getStatusResultMap(apiStatusResultMap, apiResultMap.get(testCase.getExecResult())); + } + + public void readRecord(ApiScenarioDTO testCase) { + getStatusResultMap(scenarioStatusResultMap, scenarioResultMap.get(testCase.getLastResult())); } @Override @@ -30,31 +50,58 @@ public class ReportResultChartComponent extends ReportComponent { testCaseReportMetric.setExecuteResult(getReportStatusResult()); } - private List getReportStatusResult() { - List reportStatusResult = new ArrayList<>(); - addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Pass.name()); - addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Failure.name()); - addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Blocking.name()); - addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Skip.name()); - addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Underway.name()); - addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Prepare.name()); + private TestCaseReportAdvanceStatusResultDTO getReportStatusResult() { + TestCaseReportAdvanceStatusResultDTO reportStatusResult = new TestCaseReportAdvanceStatusResultDTO(); + buildFunctionalStatusResult(reportStatusResult); + buildApiStatusResult(reportStatusResult); + buildScenarioStatusResult(reportStatusResult); return reportStatusResult; } - private void addToReportStatusResultList(List reportStatusResultList, String status) { - if (reportStatusResultMap.get(status) != null) { - reportStatusResultList.add(reportStatusResultMap.get(status)); + private void buildFunctionalStatusResult(TestCaseReportAdvanceStatusResultDTO reportStatusResult) { + List functionalStatusResult = new ArrayList<>(); + addToReportStatusResultList(functionalStatusResultMap, functionalStatusResult, TestPlanTestCaseStatus.Pass.name()); + addToReportStatusResultList(functionalStatusResultMap, functionalStatusResult, TestPlanTestCaseStatus.Failure.name()); + addToReportStatusResultList(functionalStatusResultMap, functionalStatusResult, TestPlanTestCaseStatus.Blocking.name()); + addToReportStatusResultList(functionalStatusResultMap, functionalStatusResult, TestPlanTestCaseStatus.Skip.name()); + addToReportStatusResultList(functionalStatusResultMap, functionalStatusResult, TestPlanTestCaseStatus.Underway.name()); + addToReportStatusResultList(functionalStatusResultMap, functionalStatusResult, TestPlanTestCaseStatus.Prepare.name()); + reportStatusResult.setFunctionalResult(functionalStatusResult); + } + + private void buildApiStatusResult(TestCaseReportAdvanceStatusResultDTO reportStatusResult) { + List apiStatusResult = new ArrayList<>(); + addToReportStatusResultList(apiStatusResultMap, apiStatusResult, TestPlanTestCaseStatus.Pass.name()); + addToReportStatusResultList(apiStatusResultMap, apiStatusResult, TestPlanTestCaseStatus.Failure.name()); + addToReportStatusResultList(apiStatusResultMap, apiStatusResult, TestPlanTestCaseStatus.Underway.name()); + reportStatusResult.setApiResult(apiStatusResult); + } + + private void buildScenarioStatusResult(TestCaseReportAdvanceStatusResultDTO reportStatusResult) { + List scenarioStatusResult = new ArrayList<>(); + addToReportStatusResultList(scenarioStatusResultMap, scenarioStatusResult, TestPlanTestCaseStatus.Pass.name()); + addToReportStatusResultList(scenarioStatusResultMap, scenarioStatusResult, TestPlanTestCaseStatus.Failure.name()); + addToReportStatusResultList(scenarioStatusResultMap, scenarioStatusResult, TestPlanTestCaseStatus.Underway.name()); + reportStatusResult.setScenarioResult(scenarioStatusResult); + } + + private void addToReportStatusResultList(Map resultMap, List reportStatusResultList, String status) { + if (resultMap.get(status) != null) { + reportStatusResultList.add(resultMap.get(status)); } } - private void getStatusResultMap(Map reportStatusResultMap, TestPlanCaseDTO testCase) { - TestCaseReportStatusResultDTO statusResult = reportStatusResultMap.get(testCase.getStatus()); + private void getStatusResultMap(Map reportStatusResultMap, String result) { + if (StringUtils.isBlank(result)) { + result = TestPlanTestCaseStatus.Underway.name(); + } + TestCaseReportStatusResultDTO statusResult = reportStatusResultMap.get(result); if (statusResult == null) { statusResult = new TestCaseReportStatusResultDTO(); - statusResult.setStatus(testCase.getStatus()); + statusResult.setStatus(result); statusResult.setCount(0); } statusResult.setCount(statusResult.getCount() + 1); - reportStatusResultMap.put(testCase.getStatus(), statusResult); + reportStatusResultMap.put(result, statusResult); } } diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportResultChartComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportResultChartComponent.java index 1a0817ce65..778182938c 100644 --- a/backend/src/main/java/io/metersphere/track/domain/ReportResultChartComponent.java +++ b/backend/src/main/java/io/metersphere/track/domain/ReportResultChartComponent.java @@ -27,7 +27,7 @@ public class ReportResultChartComponent extends ReportComponent { @Override public void afterBuild(TestCaseReportMetricDTO testCaseReportMetric) { - testCaseReportMetric.setExecuteResult(getReportStatusResult()); +// testCaseReportMetric.setExecuteResult(getReportStatusResult()); } private List getReportStatusResult() { diff --git a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java index ea29555e7c..a092ebd190 100644 --- a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java +++ b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java @@ -3,10 +3,13 @@ package io.metersphere.track.dto; import lombok.Getter; import lombok.Setter; +import java.util.List; + @Getter @Setter -public class TestCaseReportStatusResultDTO { - private String status; - private Integer count; +public class TestCaseReportAdvanceStatusResultDTO { + private List functionalResult; + private List apiResult; + private List scenarioResult; } diff --git a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java index b1b4e8fcd9..1469213ac3 100644 --- a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java +++ b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java @@ -10,7 +10,8 @@ import java.util.List; @Setter public class TestCaseReportMetricDTO { - private List executeResult; +// private List executeResult; + private TestCaseReportAdvanceStatusResultDTO executeResult; private List moduleExecuteResult; private List failureTestCases; private List Issues; diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java index c218d0e95b..aa759b85e6 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java @@ -3,6 +3,10 @@ package io.metersphere.track.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import io.metersphere.api.dto.automation.ApiScenarioDTO; +import io.metersphere.api.dto.automation.TestPlanScenarioRequest; +import io.metersphere.api.dto.definition.ApiTestCaseRequest; +import io.metersphere.api.dto.definition.TestPlanApiCaseDTO; import io.metersphere.base.domain.*; import io.metersphere.base.mapper.*; import io.metersphere.base.mapper.ext.ExtProjectMapper; @@ -22,6 +26,7 @@ import io.metersphere.notice.service.NoticeSendService; import io.metersphere.service.SystemParameterService; import io.metersphere.track.Factory.ReportComponentFactory; import io.metersphere.track.domain.ReportComponent; +import io.metersphere.track.domain.ReportResultAdvancedChartComponent; import io.metersphere.track.dto.TestCaseReportMetricDTO; import io.metersphere.track.dto.TestPlanCaseDTO; import io.metersphere.track.dto.TestPlanDTO; @@ -80,6 +85,10 @@ public class TestPlanService { private NoticeSendService noticeSendService; @Resource private SystemParameterService systemParameterService; + @Resource + private TestPlanApiCaseService testPlanApiCaseService; + @Resource + private TestPlanScenarioCaseService testPlanScenarioCaseService; public synchronized void addTestPlan(AddTestPlanRequest testPlan) { if (getTestPlanByName(testPlan.getName()).size() > 0) { @@ -459,7 +468,6 @@ public class TestPlanService { } public TestCaseReportMetricDTO getMetric(String planId) { - IssuesService issuesService = (IssuesService) CommonBeanFactory.getBean("issuesService"); QueryTestPlanRequest queryTestPlanRequest = new QueryTestPlanRequest(); queryTestPlanRequest.setId(planId); @@ -472,31 +480,8 @@ public class TestPlanService { JSONArray componentIds = content.getJSONArray("components"); List components = ReportComponentFactory.createComponents(componentIds.toJavaList(String.class), testPlan); + List issues = buildFunctionalCaseReport(planId, components); - List testPlanTestCases = listTestCaseByPlanId(planId); - List issues = new ArrayList<>(); - for (TestPlanCaseDTO testCase : testPlanTestCases) { - List issue = issuesService.getIssues(testCase.getCaseId()); - if (issue.size() > 0) { - for (Issues i : issue) { - i.setModel(testCase.getNodePath()); - i.setProjectName(testCase.getProjectName()); - String des = i.getDescription().replaceAll("

", "").replaceAll("

", ""); - i.setDescription(des); - if (i.getLastmodify() == null || i.getLastmodify() == "") { - if (i.getReporter() != null || i.getReporter() != "") { - i.setLastmodify(i.getReporter()); - } - } - } - issues.addAll(issue); - Collections.sort(issues, Comparator.comparing(Issues::getCreateTime, (t1, t2) -> t2.compareTo(t1))); - } - - components.forEach(component -> { - component.readRecord(testCase); - }); - } TestCaseReportMetricDTO testCaseReportMetricDTO = new TestCaseReportMetricDTO(); components.forEach(component -> { component.afterBuild(testCaseReportMetricDTO); @@ -609,4 +594,86 @@ public class TestPlanService { return context; } + public TestCaseReportMetricDTO getStatisticsMetric(String planId) { + QueryTestPlanRequest queryTestPlanRequest = new QueryTestPlanRequest(); + queryTestPlanRequest.setId(planId); + + TestPlanDTO testPlan = extTestPlanMapper.list(queryTestPlanRequest).get(0); + String projectName = getProjectNameByPlanId(planId); + testPlan.setProjectName(projectName); + + TestCaseReport testCaseReport = testCaseReportMapper.selectByPrimaryKey(testPlan.getReportId()); + JSONObject content = JSONObject.parseObject(testCaseReport.getContent()); + JSONArray componentIds = content.getJSONArray("components"); + + List components = ReportComponentFactory.createComponents(componentIds.toJavaList(String.class), testPlan); + List issues = buildFunctionalCaseReport(planId, components); + buildApiCaseReport(planId, components); + buildScenarioCaseReport(planId, components); + + TestCaseReportMetricDTO testCaseReportMetricDTO = new TestCaseReportMetricDTO(); + components.forEach(component -> { + component.afterBuild(testCaseReportMetricDTO); + }); + testCaseReportMetricDTO.setIssues(issues); + return testCaseReportMetricDTO; + } + + public void buildApiCaseReport(String planId, List components) { + ApiTestCaseRequest request = new ApiTestCaseRequest(); + request.setPlanId(planId); + List apiCaseDTOS = testPlanApiCaseService.list(request); + ReportResultAdvancedChartComponent chartComponent = null; + for (TestPlanApiCaseDTO item : apiCaseDTOS) { + for (ReportComponent component : components) { + if (component instanceof ReportResultAdvancedChartComponent) { + chartComponent = (ReportResultAdvancedChartComponent) component; + chartComponent.readRecord(item); + } + } + } + } + + public void buildScenarioCaseReport(String planId, List components) { + TestPlanScenarioRequest request = new TestPlanScenarioRequest(); + request.setPlanId(planId); + List scenarioDTOS = testPlanScenarioCaseService.list(request); + ReportResultAdvancedChartComponent chartComponent = null; + for (ApiScenarioDTO item : scenarioDTOS) { + for (ReportComponent component : components) { + if (component instanceof ReportResultAdvancedChartComponent) { + chartComponent = (ReportResultAdvancedChartComponent) component; + chartComponent.readRecord(item); + } + } + } + } + + public List buildFunctionalCaseReport(String planId, List components) { + IssuesService issuesService = (IssuesService) CommonBeanFactory.getBean("issuesService"); + List testPlanTestCases = listTestCaseByPlanId(planId); + List issues = new ArrayList<>(); + for (TestPlanCaseDTO testCase : testPlanTestCases) { + List issue = issuesService.getIssues(testCase.getCaseId()); + if (issue.size() > 0) { + for (Issues i : issue) { + i.setModel(testCase.getNodePath()); + i.setProjectName(testCase.getProjectName()); + String des = i.getDescription().replaceAll("

", "").replaceAll("

", ""); + i.setDescription(des); + if (i.getLastmodify() == null || i.getLastmodify() == "") { + if (i.getReporter() != null || i.getReporter() != "") { + i.setLastmodify(i.getReporter()); + } + } + } + issues.addAll(issue); + Collections.sort(issues, Comparator.comparing(Issues::getCreateTime, (t1, t2) -> t2.compareTo(t1))); + } + components.forEach(component -> { + component.readRecord(testCase); + }); + } + return issues; + } } From 4d7b794436bffbea59761fbff5922cb31d0bc8cb Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Wed, 23 Dec 2020 16:25:01 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E8=AE=A1?= =?UTF-8?q?=E5=88=92-=E5=A4=B1=E8=B4=A5=E8=AE=A1=E5=88=92=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../track/Factory/ReportComponentFactory.java | 3 +- .../track/domain/ReportComponent.java | 11 ++ .../ReportFailureAdvanceResultComponent.java | 55 +++++++++ .../domain/ReportFailureResultComponent.java | 2 +- .../ReportResultAdvancedChartComponent.java | 8 +- .../track/dto/FailureTestCasesAdvanceDTO.java | 16 +++ .../track/dto/TestCaseReportMetricDTO.java | 3 +- .../track/service/TestPlanService.java | 14 +-- .../FailureResultAdvanceComponent.vue | 104 +++++++++++++++++ .../TemplateComponent/TemplateComponent.vue | 8 +- .../component/ApiFailureCasesList.vue | 73 ++++++++++++ .../component/FunctionalFailureCasesList.vue | 108 ++++++++++++++++++ .../component/ScenarioFailureCasesList.vue | 77 +++++++++++++ 13 files changed, 463 insertions(+), 19 deletions(-) create mode 100644 backend/src/main/java/io/metersphere/track/domain/ReportFailureAdvanceResultComponent.java create mode 100644 backend/src/main/java/io/metersphere/track/dto/FailureTestCasesAdvanceDTO.java create mode 100644 frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue create mode 100644 frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ApiFailureCasesList.vue create mode 100644 frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/FunctionalFailureCasesList.vue create mode 100644 frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ScenarioFailureCasesList.vue diff --git a/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java b/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java index 15793efd0a..537396745e 100644 --- a/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java +++ b/backend/src/main/java/io/metersphere/track/Factory/ReportComponentFactory.java @@ -18,7 +18,8 @@ public class ReportComponentFactory { return new ReportResultAdvancedChartComponent(testPlan); // return new ReportResultChartComponent(testPlan); } else if (StringUtils.equals("4", componentId)) { - return new ReportFailureResultComponent(testPlan); +// return new ReportFailureResultComponent(testPlan); + return new ReportFailureAdvanceResultComponent(testPlan); } return null; } diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportComponent.java index 22677500d3..8f734dfa3d 100644 --- a/backend/src/main/java/io/metersphere/track/domain/ReportComponent.java +++ b/backend/src/main/java/io/metersphere/track/domain/ReportComponent.java @@ -1,8 +1,12 @@ package io.metersphere.track.domain; +import io.metersphere.api.dto.automation.ApiScenarioDTO; +import io.metersphere.api.dto.definition.TestPlanApiCaseDTO; +import io.metersphere.commons.constants.APITestStatus; import io.metersphere.track.dto.TestCaseReportMetricDTO; import io.metersphere.track.dto.TestPlanCaseDTO; import io.metersphere.track.dto.TestPlanDTO; +import org.apache.commons.lang3.StringUtils; public abstract class ReportComponent { protected String componentId; @@ -15,4 +19,11 @@ public abstract class ReportComponent { public abstract void readRecord(TestPlanCaseDTO testCase); public abstract void afterBuild(TestCaseReportMetricDTO testCaseReportMetric); + + public void readRecord(TestPlanApiCaseDTO testCase) { + } + + public void readRecord(ApiScenarioDTO testCase) { + } + } diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportFailureAdvanceResultComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportFailureAdvanceResultComponent.java new file mode 100644 index 0000000000..180f2c0001 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/domain/ReportFailureAdvanceResultComponent.java @@ -0,0 +1,55 @@ +package io.metersphere.track.domain; + +import io.metersphere.api.dto.automation.ApiScenarioDTO; +import io.metersphere.api.dto.automation.ScenarioStatus; +import io.metersphere.api.dto.definition.TestPlanApiCaseDTO; +import io.metersphere.commons.constants.TestPlanTestCaseStatus; +import io.metersphere.track.dto.FailureTestCasesAdvanceDTO; +import io.metersphere.track.dto.TestCaseReportMetricDTO; +import io.metersphere.track.dto.TestPlanCaseDTO; +import io.metersphere.track.dto.TestPlanDTO; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +public class ReportFailureAdvanceResultComponent extends ReportComponent { + private List functionalTestCases = new ArrayList<>(); + private List apiTestCases = new ArrayList<>(); + private List scenarioTestCases = new ArrayList<>(); + + public ReportFailureAdvanceResultComponent(TestPlanDTO testPlan) { + super(testPlan); + componentId = "4"; + } + + @Override + public void readRecord(TestPlanCaseDTO testCase) { + if (StringUtils.equals(testCase.getStatus(), TestPlanTestCaseStatus.Failure.name())) { + this.functionalTestCases.add(testCase); + } + } + + @Override + public void readRecord(TestPlanApiCaseDTO testCase) { + if (StringUtils.equals(testCase.getExecResult(), "error")) { + this.apiTestCases.add(testCase); + } + } + + @Override + public void readRecord(ApiScenarioDTO testCase) { + if (StringUtils.equals(testCase.getLastResult(), ScenarioStatus.Fail.name())) { + this.scenarioTestCases.add(testCase); + } + } + + @Override + public void afterBuild(TestCaseReportMetricDTO testCaseReportMetric) { + FailureTestCasesAdvanceDTO failureTestCasesAdvanceDTO = new FailureTestCasesAdvanceDTO(); + failureTestCasesAdvanceDTO.setFunctionalTestCases(functionalTestCases); + failureTestCasesAdvanceDTO.setApiTestCases(apiTestCases); + failureTestCasesAdvanceDTO.setScenarioTestCases(scenarioTestCases); + testCaseReportMetric.setFailureTestCases(failureTestCasesAdvanceDTO); + } +} diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportFailureResultComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportFailureResultComponent.java index 469575717c..50595c824a 100644 --- a/backend/src/main/java/io/metersphere/track/domain/ReportFailureResultComponent.java +++ b/backend/src/main/java/io/metersphere/track/domain/ReportFailureResultComponent.java @@ -26,6 +26,6 @@ public class ReportFailureResultComponent extends ReportComponent { @Override public void afterBuild(TestCaseReportMetricDTO testCaseReportMetric) { - testCaseReportMetric.setFailureTestCases(failureTestCases); +// testCaseReportMetric.setFailureTestCases(failureTestCases); } } diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java index e81697ce3d..3c465d9079 100644 --- a/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java +++ b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java @@ -1,8 +1,8 @@ package io.metersphere.track.domain; import io.metersphere.api.dto.automation.ApiScenarioDTO; +import io.metersphere.api.dto.automation.ScenarioStatus; import io.metersphere.api.dto.definition.TestPlanApiCaseDTO; -import io.metersphere.commons.constants.APITestStatus; import io.metersphere.commons.constants.TestPlanTestCaseStatus; import io.metersphere.track.dto.*; import org.apache.commons.lang3.StringUtils; @@ -23,8 +23,8 @@ public class ReportResultAdvancedChartComponent extends ReportComponent { static { apiResultMap.put("success", TestPlanTestCaseStatus.Pass.name()); apiResultMap.put("error", TestPlanTestCaseStatus.Failure.name()); - scenarioResultMap.put(APITestStatus.Success.name(), TestPlanTestCaseStatus.Pass.name()); - scenarioResultMap.put(APITestStatus.Error.name(), TestPlanTestCaseStatus.Failure.name()); + scenarioResultMap.put(ScenarioStatus.Success.name(), TestPlanTestCaseStatus.Pass.name()); + scenarioResultMap.put(ScenarioStatus.Fail.name(), TestPlanTestCaseStatus.Failure.name()); } public ReportResultAdvancedChartComponent(TestPlanDTO testPlan) { @@ -37,10 +37,12 @@ public class ReportResultAdvancedChartComponent extends ReportComponent { getStatusResultMap(functionalStatusResultMap, testCase.getStatus()); } + @Override public void readRecord(TestPlanApiCaseDTO testCase) { getStatusResultMap(apiStatusResultMap, apiResultMap.get(testCase.getExecResult())); } + @Override public void readRecord(ApiScenarioDTO testCase) { getStatusResultMap(scenarioStatusResultMap, scenarioResultMap.get(testCase.getLastResult())); } diff --git a/backend/src/main/java/io/metersphere/track/dto/FailureTestCasesAdvanceDTO.java b/backend/src/main/java/io/metersphere/track/dto/FailureTestCasesAdvanceDTO.java new file mode 100644 index 0000000000..ba39267353 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/dto/FailureTestCasesAdvanceDTO.java @@ -0,0 +1,16 @@ +package io.metersphere.track.dto; + +import io.metersphere.api.dto.automation.ApiScenarioDTO; +import io.metersphere.api.dto.definition.TestPlanApiCaseDTO; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class FailureTestCasesAdvanceDTO { + private List functionalTestCases; + private List apiTestCases; + private List scenarioTestCases; +} diff --git a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java index 1469213ac3..bd8f4c84a1 100644 --- a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java +++ b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportMetricDTO.java @@ -13,7 +13,8 @@ public class TestCaseReportMetricDTO { // private List executeResult; private TestCaseReportAdvanceStatusResultDTO executeResult; private List moduleExecuteResult; - private List failureTestCases; + private FailureTestCasesAdvanceDTO failureTestCases; +// private List failureTestCases; private List Issues; private List executors; private String principal; diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java index aa759b85e6..cd0e35302b 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java @@ -26,7 +26,7 @@ import io.metersphere.notice.service.NoticeSendService; import io.metersphere.service.SystemParameterService; import io.metersphere.track.Factory.ReportComponentFactory; import io.metersphere.track.domain.ReportComponent; -import io.metersphere.track.domain.ReportResultAdvancedChartComponent; + import io.metersphere.track.dto.TestCaseReportMetricDTO; import io.metersphere.track.dto.TestPlanCaseDTO; import io.metersphere.track.dto.TestPlanDTO; @@ -623,13 +623,9 @@ public class TestPlanService { ApiTestCaseRequest request = new ApiTestCaseRequest(); request.setPlanId(planId); List apiCaseDTOS = testPlanApiCaseService.list(request); - ReportResultAdvancedChartComponent chartComponent = null; for (TestPlanApiCaseDTO item : apiCaseDTOS) { for (ReportComponent component : components) { - if (component instanceof ReportResultAdvancedChartComponent) { - chartComponent = (ReportResultAdvancedChartComponent) component; - chartComponent.readRecord(item); - } + component.readRecord(item); } } } @@ -638,13 +634,9 @@ public class TestPlanService { TestPlanScenarioRequest request = new TestPlanScenarioRequest(); request.setPlanId(planId); List scenarioDTOS = testPlanScenarioCaseService.list(request); - ReportResultAdvancedChartComponent chartComponent = null; for (ApiScenarioDTO item : scenarioDTOS) { for (ReportComponent component : components) { - if (component instanceof ReportResultAdvancedChartComponent) { - chartComponent = (ReportResultAdvancedChartComponent) component; - chartComponent.readRecord(item); - } + component.readRecord(item); } } } diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue new file mode 100644 index 0000000000..5a7971e6e4 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue index 114fc20ca9..79fedc9753 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue @@ -7,7 +7,8 @@ - + +
@@ -18,7 +19,8 @@ - + +
@@ -35,10 +37,12 @@ import DefectListComponent from "./DefectListComponent"; import html2canvas from 'html2canvas'; import TestResultAdvanceChartComponent from "./TestResultAdvanceChartComponent"; + import FailureResultAdvanceComponent from "./FailureResultAdvanceComponent"; export default { name: "TemplateComponent", components: { + FailureResultAdvanceComponent, TestResultAdvanceChartComponent, FailureResultComponent,DefectListComponent, RichTextComponent, TestResultChartComponent, TestResultComponent, BaseInfoComponent}, diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ApiFailureCasesList.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ApiFailureCasesList.vue new file mode 100644 index 0000000000..e8ee8e8118 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ApiFailureCasesList.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/FunctionalFailureCasesList.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/FunctionalFailureCasesList.vue new file mode 100644 index 0000000000..14f1e24d21 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/FunctionalFailureCasesList.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ScenarioFailureCasesList.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ScenarioFailureCasesList.vue new file mode 100644 index 0000000000..7370bcbedd --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/component/ScenarioFailureCasesList.vue @@ -0,0 +1,77 @@ + + + + + From 20a79f28703cd204bbcb2bbe6068f45b122d0178 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Wed, 23 Dec 2020 16:25:18 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89):?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E6=89=A7=E8=A1=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metersphere/api/service/ApiDefinitionExecResultService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java index 7c00ff765c..8ec808f47c 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java @@ -29,8 +29,6 @@ public class ApiDefinitionExecResultService { public void saveApiResult(TestResult result, String type) { result.getScenarios().get(0).getRequestResults().forEach(item -> { - // 清理原始资源,每个执行 保留一条结果 - extApiDefinitionExecResultMapper.deleteByResourceId(item.getName()); ApiDefinitionExecResult saveResult = new ApiDefinitionExecResult(); saveResult.setId(UUID.randomUUID().toString()); saveResult.setCreateTime(System.currentTimeMillis()); From cae9c24e4f6a38977cc23d91b7ae6a88b1244b90 Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Wed, 23 Dec 2020 16:58:56 +0800 Subject: [PATCH 5/5] =?UTF-8?q?refactor:=20=E6=B5=8B=E8=AF=95=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E6=8A=A5=E5=91=8A=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FailureResultAdvanceComponent.vue | 22 +++-- .../TestResultAdvanceChartComponent.vue | 38 +++++++-- .../TestCaseStatisticsReportView.vue | 81 +++++++++++-------- 3 files changed, 95 insertions(+), 46 deletions(-) diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue index 5a7971e6e4..f2d1156cb2 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/FailureResultAdvanceComponent.vue @@ -1,12 +1,9 @@ @@ -81,6 +78,17 @@ } } }, + computed: { + showFunctional() { + return this.failureTestCases.functionalTestCases.length > 0 || (this.failureTestCases.apiTestCases.length <= 0 && this.failureTestCases.scenarioTestCases.length <= 0); + }, + showApi() { + return this.failureTestCases.apiTestCases.length > 0; + }, + showScenario() { + return this.failureTestCases.scenarioTestCases.length > 0; + } + }, methods: { goFailureTestCase(row) { hub.$emit("openFailureTestCase", row); @@ -98,7 +106,7 @@ } .failure-cases-list { - margin-bottom: 30px; + margin-bottom: 40px; } diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue index a913852b38..1412d990a7 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue @@ -2,25 +2,25 @@ - + @@ -76,6 +76,30 @@ } } }, + computed: { + showFunctional() { + return this.executeResult.functionalResult.length > 0 || (this.executeResult.apiResult.length <= 0 && this.executeResult.scenarioResult.length <= 0); + }, + showApi() { + return this.executeResult.apiResult.length > 0; + }, + showScenario() { + return this.executeResult.scenarioResult.length > 0; + }, + isShowOne() { + let count = 0; + if (this.showFunctional) { + count++; + } + if (this.showApi) { + count++; + } + if (this.showScenario) { + count++; + } + return count === 1; + } + }, watch: { executeResult() { this.getCharData(); @@ -141,4 +165,8 @@ display: inline-block; } + .show-one .char-item { + display: block; + } + diff --git a/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue b/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue index 27bdee8af1..fa8a85e64b 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue @@ -1,36 +1,35 @@