From d43cb36b3c9cc34570d109a2757ae27774b2fcb9 Mon Sep 17 00:00:00 2001 From: song-cc-rock Date: Mon, 24 Jul 2023 10:59:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA):=20?= =?UTF-8?q?=E5=9C=BA=E6=99=AF=E8=87=AA=E5=AE=9A=E4=B9=89ID=E5=BC=80?= =?UTF-8?q?=E5=90=AF=E6=97=B6=E5=8A=9F=E8=83=BD=E7=94=A8=E4=BE=8B=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=98=BE=E7=A4=BA=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1028007 --user=宋昌昌 [接口测试]github#25700接口测试场景用例都自定义了ID,但在测试跟踪-功能用例下去关联场景用例时,显示的ID还是默认的 https://www.tapd.cn/55049933/s/1396370 --- .../base/mapper/ext/ExtApiScenarioMapper.xml | 3 ++- .../BaseProjectApplicationService.java | 21 +++++++++++++++++++ .../metersphere/service/TestCaseService.java | 15 +++++++++++-- .../case/relate/CaseRelateScenarioList.vue | 17 ++++++++++++--- 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioMapper.xml b/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioMapper.xml index 8b8519dac7..24a5398cd4 100644 --- a/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioMapper.xml +++ b/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioMapper.xml @@ -941,7 +941,8 @@ atc.step_total, atc. STATUS, atc.tags, - atc.version_id + atc.version_id, + atc.custom_num FROM api_scenario atc LEFT JOIN test_case_test tct ON atc.id = tct.test_id diff --git a/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseProjectApplicationService.java b/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseProjectApplicationService.java index 88e9ffbf1f..a940b49906 100644 --- a/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseProjectApplicationService.java +++ b/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseProjectApplicationService.java @@ -59,6 +59,16 @@ public class BaseProjectApplicationService { return projectApplications.get(0); } + public List getProjectApplicationByIds(List projectIds, String type) { + ProjectApplicationExample projectApplicationExample = new ProjectApplicationExample(); + projectApplicationExample.createCriteria().andProjectIdIn(projectIds).andTypeEqualTo(type); + List projectApplications = projectApplicationMapper.selectByExample(projectApplicationExample); + if (CollectionUtils.isEmpty(projectApplications)) { + return new ArrayList<>(); + } + return projectApplications; + } + public HashMap getProjectConfigMap(String projectId) { ProjectApplicationExample example = new ProjectApplicationExample(); example.createCriteria().andProjectIdEqualTo(projectId); @@ -153,6 +163,17 @@ public class BaseProjectApplicationService { return config; } + /** + * 返回多个项目下某配置的值 + * + * @param projectIds 项目ID集合 + * @param type ProjectApplicationType中某项目配置 + * @return ProjectConfigGroupDTOs 项目ID和配置集合 + */ + public List getProjectApplicationTypeVals(List projectIds, String type) { + return this.getProjectApplicationByIds(projectIds, type); + } + private Object valueOf(Class type, String value) { //todo 其他类型 if (type == Boolean.class) { diff --git a/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java b/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java index b468b505f1..89b85e1c8f 100644 --- a/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java +++ b/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java @@ -2804,6 +2804,7 @@ public class TestCaseService { Set serviceIdSet = DiscoveryUtil.getServiceIdSet(); + List scenarioProjectIds = new ArrayList<>(); List projectIds = new ArrayList<>(); List versionIds = new ArrayList<>(); List apiCases = new ArrayList<>(); @@ -2817,7 +2818,8 @@ public class TestCaseService { apiScenarios = relevanceApiCaseService.getScenarioCaseByIds( getTestIds(testCaseTests, TestCaseTestType.automation.name())); projectIds.addAll(apiCases.stream().map(s -> s.getProjectId()).collect(Collectors.toList())); - projectIds.addAll(apiScenarios.stream().map(s -> s.getProjectId()).collect(Collectors.toList())); + scenarioProjectIds = apiScenarios.stream().map(s -> s.getProjectId()).distinct().collect(Collectors.toList()); + projectIds.addAll(scenarioProjectIds); versionIds.addAll(apiCases.stream().map(s -> s.getVersionId()).collect(Collectors.toList())); versionIds.addAll(apiScenarios.stream().map(s -> s.getVersionId()).collect(Collectors.toList())); } @@ -2858,13 +2860,22 @@ public class TestCaseService { Map versionNameMap = projectVersions.stream().collect(Collectors.toMap(ProjectVersion::getId, ProjectVersion::getName)); + // 获取项目下自定义场景ID配置 + List projectApplicationTypeVals = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(scenarioProjectIds)) { + projectApplicationTypeVals = baseProjectApplicationService.getProjectApplicationTypeVals(scenarioProjectIds, ProjectApplicationType.SCENARIO_CUSTOM_NUM.name()); + } + Map customTypeMap = projectApplicationTypeVals.stream().collect(Collectors.toMap(ProjectApplication::getProjectId, ProjectApplication::getTypeValue)); + List testCaseTestList = new ArrayList<>(); apiCases.forEach(item -> { getTestCaseTestDaoList(TestCaseTestType.testcase.name(), item.getNum(), item.getName(), item.getId(), projectNameMap.get(item.getProjectId()), versionNameMap.get(item.getVersionId()), testCaseTestList, testCaseTestsMap); }); apiScenarios.forEach(item -> { - getTestCaseTestDaoList(TestCaseTestType.automation.name(), item.getNum(), item.getName(), item.getId(), projectNameMap.get(item.getProjectId()), versionNameMap.get(item.getVersionId()), + // 所属项目是否开启自定义场景ID + String customType = customTypeMap.get(item.getProjectId()); + getTestCaseTestDaoList(TestCaseTestType.automation.name(), StringUtils.equals(customType, "true") ? item.getCustomNum() : item.getNum(), item.getName(), item.getId(), projectNameMap.get(item.getProjectId()), versionNameMap.get(item.getVersionId()), testCaseTestList, testCaseTestsMap); }); apiLoadTests.forEach(item -> { diff --git a/test-track/frontend/src/business/case/components/case/relate/CaseRelateScenarioList.vue b/test-track/frontend/src/business/case/components/case/relate/CaseRelateScenarioList.vue index 02d60e3762..c655461275 100644 --- a/test-track/frontend/src/business/case/components/case/relate/CaseRelateScenarioList.vue +++ b/test-track/frontend/src/business/case/components/case/relate/CaseRelateScenarioList.vue @@ -38,8 +38,8 @@ @refresh="initTable" ref="table" > - - + + { + if (result.data) { + this.scenarioCustomNumEnable = result.data['scenarioCustomNum']; + } + }); + }, selectCountChange(data) { this.$emit("selectCountChange", data); },