diff --git a/README.md b/README.md index b187c2dcdd..245a2a28ca 100755 --- a/README.md +++ b/README.md @@ -189,9 +189,9 @@ v1.1.0 是 v1.0.0 之后的功能版本。 ## 致谢 -- [BlazeMeter](https://www.blazemeter.com/):感谢 BlazeMeter 提供的设计思路 -- [JMeter](https://jmeter.apache.org/):MeterSphere 使用了 JMeter 作为测试引擎 -- [Element](https://element.eleme.cn/#/):感谢 Element 提供的优秀组件库 +- [BlazeMeter](https://www.blazemeter.com/):感谢 BlazeMeter 提供的设计思路 +- [JMeter](https://jmeter.apache.org/):MeterSphere 使用了 JMeter 作为测试引擎 +- [Element](https://element.eleme.cn/#/):感谢 Element 提供的优秀组件库 ## 加入 MeterSphere 团队 diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportResultComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportResultComponent.java index 5f24e1a3b7..28c69361a3 100644 --- a/backend/src/main/java/io/metersphere/track/domain/ReportResultComponent.java +++ b/backend/src/main/java/io/metersphere/track/domain/ReportResultComponent.java @@ -86,12 +86,32 @@ public class ReportResultComponent extends ReportComponent { moduleResult.setCaseCount(0); moduleResult.setPassCount(0); moduleResult.setIssuesCount(0); + moduleResult.setFailureCount(0); + moduleResult.setBlockingCount(0); + moduleResult.setPrepareCount(0); + moduleResult.setSkipCount(0); + moduleResult.setUnderwayCount(0); moduleResult.setModuleId(rootNodeId); } moduleResult.setCaseCount(moduleResult.getCaseCount() + 1); if (StringUtils.equals(testCase.getStatus(), TestPlanTestCaseStatus.Pass.name())) { moduleResult.setPassCount(moduleResult.getPassCount() + 1); } + if (StringUtils.equals(testCase.getStatus(), TestPlanTestCaseStatus.Prepare.name())) { + moduleResult.setPrepareCount(moduleResult.getPrepareCount() + 1); + } + if (StringUtils.equals(testCase.getStatus(), TestPlanTestCaseStatus.Underway.name())) { + moduleResult.setUnderwayCount(moduleResult.getUnderwayCount() + 1); + } + if (StringUtils.equals(testCase.getStatus(), TestPlanTestCaseStatus.Failure.name())) { + moduleResult.setFailureCount(moduleResult.getFailureCount() + 1); + } + if (StringUtils.equals(testCase.getStatus(), TestPlanTestCaseStatus.Skip.name())) { + moduleResult.setSkipCount(moduleResult.getSkipCount() + 1); + } + if (StringUtils.equals(testCase.getStatus(), TestPlanTestCaseStatus.Blocking.name())) { + moduleResult.setBlockingCount(moduleResult.getBlockingCount() + 1); + } if (StringUtils.isNotBlank(testCase.getIssues())) { if (JSON.parseObject(testCase.getIssues()).getBoolean("hasIssues")) { moduleResult.setIssuesCount(moduleResult.getIssuesCount() + 1); diff --git a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportModuleResultDTO.java b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportModuleResultDTO.java index 59b82f0c50..00e05f9486 100644 --- a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportModuleResultDTO.java +++ b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportModuleResultDTO.java @@ -12,4 +12,9 @@ public class TestCaseReportModuleResultDTO { private Integer passCount; private Double passRate; private Integer issuesCount; + private Integer prepareCount; + private Integer skipCount; + private Integer failureCount; + private Integer blockingCount; + private Integer underwayCount; } diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/DefectListComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/DefectListComponent.vue new file mode 100644 index 0000000000..d04a69d014 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/DefectListComponent.vue @@ -0,0 +1,82 @@ + + + + + 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 911bddafe9..20f1782041 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,6 +7,7 @@ + @@ -16,6 +17,7 @@ + @@ -28,10 +30,11 @@ import TestResultChartComponent from "./TestResultChartComponent"; import RichTextComponent from "./RichTextComponent"; import FailureResultComponent from "./FailureResultComponent"; + import DefectListComponent from "./DefectListComponent"; export default { name: "TemplateComponent", components: { - FailureResultComponent, + FailureResultComponent,DefectListComponent, RichTextComponent, TestResultChartComponent, TestResultComponent, BaseInfoComponent}, props: { preview: { diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultComponent.vue index c65c738aa5..8bca789386 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultComponent.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultComponent.vue @@ -18,6 +18,36 @@ :label="$t('test_track.plan_view.case_count')" width="180"> + + + + + + + + + + + + @@ -50,19 +80,37 @@ moduleName: this.$t('test_track.module.module') + '1', caseCount: '14', passRate: 10.8, - issuesCount: 3 + issuesCount: 3, + passCount:0, + failureCount:0, + blockingCount:0, + skipCount:0, + underwayCount:0, + prepareCount:0 }, { - moduleName: this.$t('test_track.module.module') + '2', - caseCount: '24', - passRate: 40, - issuesCount: 6 + moduleName: this.$t('test_track.module.module') + '1', + caseCount: '14', + passRate: 10.8, + issuesCount: 3, + passCount:0, + failureCount:0, + blockingCount:0, + skipCount:0, + underwayCount:0, + prepareCount:0 }, { - moduleName: this.$t('test_track.module.module') + '3', - caseCount: '50', - passRate: 76.9, - issuesCount: 8 + moduleName: this.$t('test_track.module.module') + '1', + caseCount: '14', + passRate: 10.8, + issuesCount: 3, + passCount:0, + failureCount:0, + blockingCount:0, + skipCount:0, + underwayCount:0, + prepareCount:0 } ] } diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue index 87a24f035b..d5a022954b 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue @@ -77,10 +77,11 @@ [2, { name: this.$t('test_track.plan_view.test_result'), id: 2 , type: 'system'}], [3, { name: this.$t('test_track.plan_view.result_distribution'), id: 3 ,type: 'system'}], [4, { name: this.$t('test_track.plan_view.failure_case'), id: 4 ,type: 'system'}], - [5, { name: this.$t('test_track.plan_view.custom_component'), id: 5 ,type: 'custom'}] + [5, { name: this.$t('test_track.plan_view.defect_list'), id: 5 ,type: 'system'}], + [6, { name: this.$t('test_track.plan_view.custom_component'), id:6,type: 'custom'}] ] ), - components: [5], + components: [6], previews: [], template: {}, isReport: false @@ -109,12 +110,12 @@ this.template = { name: '', content: { - components: [1,2,3,4,5], + components: [1,2,3,4,5,6], customComponent: new Map() } }; this.previews = []; - this.components = [5]; + this.components = [6]; if (id) { this.type = 'edit'; this.getTemplateById(id); @@ -144,6 +145,7 @@ } } }); + }, handleClose() { window.removeEventListener('popstate', this.goBack, false); diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue index a9f7514615..47e43d6537 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue @@ -69,7 +69,8 @@ [2, { name: this.$t('test_track.plan_view.test_result'), id: 2 , type: 'system'}], [3, { name: this.$t('test_track.plan_view.result_distribution'), id: 3 ,type: 'system'}], [4, { name: this.$t('test_track.plan_view.failure_case'), id: 4 ,type: 'system'}], - [5, { name: this.$t('test_track.plan_view.custom_component'), id: 5 ,type: 'custom'}] + [5, { name: this.$t('test_track.plan_view.defect_list'), id: 5 ,type: 'system'}], + [6, { name: this.$t('test_track.plan_view.custom_component'), id: 6 ,type: 'custom'}] ] ), isTestManagerOrTestUser: false @@ -175,6 +176,9 @@ if (!this.metric.moduleExecuteResult) { this.metric.moduleExecuteResult = []; } + /*缺陷列表*/ + this.metric.defectList = []; + if (this.report.startTime) { this.metric.startTime = new Date(this.report.startTime); } diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index eac216b9dd..cc729162d0 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -610,6 +610,11 @@ export default { delete_confirm: "Confirm delete module:", delete_all_resource: "and all submodules and test cases under the module", module: "Module", + title: "Title", + describe: "Describe", + status: "Status", + current_owner: "Current Owner", + creation_time: "Creation time" }, home: { recent_test: "Recent test", @@ -649,6 +654,7 @@ export default { result_distribution: "Result distribution", custom_component: "Custom", create_report: "Create report", + defect_list:"Defect list", view_report: "View report", component_library: "Component library", component_library_tip: "Drag and drop the component from the component library, add to the right, preview the report effect, only one can be added per system component.", diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index 8834497980..a6b945d397 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -615,6 +615,11 @@ export default { delete_confirm: "确认删除模块: ", delete_all_resource: "以及模块下所有子模块和测试用例", module: "模块", + title: "标题", + status: "状态", + describe: "描述", + current_owner: "处理人", + creation_time: "创建时间" }, home: { recent_test: "最近测试", @@ -653,6 +658,7 @@ export default { test_result: "测试结果", result_distribution: "测试结果分布", custom_component: "自定义模块", + defect_list:"缺陷列表", create_report: "创建测试报告", view_report: "查看测试报告", component_library: "组件库", diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index 4b25792273..733f94a58d 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -610,6 +610,11 @@ export default { delete_confirm: "確認刪除模塊: ", delete_all_resource: "以及模塊下所有子模塊和測試用例", module: "模塊", + title: "標題", + status: "狀態", + describe: "描述", + current_owner: "處理人", + creation_time: "創建時間" }, home: { recent_test: "最近測試", @@ -649,6 +654,7 @@ export default { result_distribution: "測試結果分布", custom_component: "自定義模塊", create_report: "創建測試報告", + defect_list:"缺陷清單", view_report: "查看測試報告", component_library: "組件庫", component_library_tip: "拖拽組件庫中組件,添加至右側,預覽報告效果,每個系統組件只能添加壹個。",