fix(测试跟踪): 修复测试计划执行时未按照所选环境执行的问题

--bug=1020897 --user=宋天阳 【测试跟踪】测试计划关联功能用例时同步关联的接口场景,执行后场景报告结果没有运行环境信息
https://www.tapd.cn/55049933/s/1316945
This commit is contained in:
song-tianyang 2022-12-19 15:41:11 +08:00 committed by 建国
parent 10737147b7
commit 8410bd4ab2
4 changed files with 141 additions and 24 deletions

View File

@ -247,6 +247,16 @@ public class ApiScenarioExecuteService {
return; return;
} }
Map<String, ApiScenarioWithBLOBs> scenarioMap = apiScenarios.stream().collect(Collectors.toMap(ApiScenarioWithBLOBs::getId, Function.identity(), (t1, t2) -> t1)); Map<String, ApiScenarioWithBLOBs> scenarioMap = apiScenarios.stream().collect(Collectors.toMap(ApiScenarioWithBLOBs::getId, Function.identity(), (t1, t2) -> t1));
//检查环境组
Map<String, String> configEnvMap = new HashMap<>();
if (request.getConfig() != null) {
if (StringUtils.equals(request.getConfig().getEnvironmentType(), EnvironmentType.JSON.toString()) && MapUtils.isNotEmpty(request.getConfig().getEnvMap())) {
configEnvMap = request.getConfig().getEnvMap();
} else if (StringUtils.equals(request.getConfig().getEnvironmentType(), EnvironmentType.GROUP.toString()) && StringUtils.isNotBlank(request.getConfig().getEnvironmentGroupId())) {
configEnvMap = environmentGroupProjectService.getEnvMap(request.getConfig().getEnvironmentGroupId());
}
}
for (String testPlanScenarioId : planScenarioIdMap.keySet()) { for (String testPlanScenarioId : planScenarioIdMap.keySet()) {
String scenarioId = planScenarioIdMap.get(testPlanScenarioId); String scenarioId = planScenarioIdMap.get(testPlanScenarioId);
ApiScenarioWithBLOBs scenario = scenarioMap.get(scenarioId); ApiScenarioWithBLOBs scenario = scenarioMap.get(scenarioId);
@ -268,6 +278,8 @@ public class ApiScenarioExecuteService {
} else if (StringUtils.equals(planApiScenario.getEnvironmentType(), EnvironmentType.GROUP.toString()) && StringUtils.isNotBlank(planApiScenario.getEnvironmentGroupId())) { } else if (StringUtils.equals(planApiScenario.getEnvironmentType(), EnvironmentType.GROUP.toString()) && StringUtils.isNotBlank(planApiScenario.getEnvironmentGroupId())) {
planEnvMap = environmentGroupProjectService.getEnvMap(planApiScenario.getEnvironmentGroupId()); planEnvMap = environmentGroupProjectService.getEnvMap(planApiScenario.getEnvironmentGroupId());
} }
planEnvMap.putAll(configEnvMap);
if (StringUtils.isEmpty(request.getProjectId())) { if (StringUtils.isEmpty(request.getProjectId())) {
request.setProjectId(extTestPlanScenarioCaseMapper.getProjectIdById(testPlanScenarioId)); request.setProjectId(extTestPlanScenarioCaseMapper.getProjectIdById(testPlanScenarioId));
} }

View File

@ -21,6 +21,7 @@ import io.metersphere.commons.utils.RequestParamsUtil;
import io.metersphere.dto.JmeterRunRequestDTO; import io.metersphere.dto.JmeterRunRequestDTO;
import io.metersphere.environment.service.BaseEnvironmentService; import io.metersphere.environment.service.BaseEnvironmentService;
import io.metersphere.utils.LoggerUtil; import io.metersphere.utils.LoggerUtil;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTree;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
@ -71,8 +72,11 @@ public class ApiScenarioSerialService {
} else { } else {
TestPlanApiScenario planApiScenario = testPlanApiScenarioMapper.selectByPrimaryKey(queue.getTestId()); TestPlanApiScenario planApiScenario = testPlanApiScenarioMapper.selectByPrimaryKey(queue.getTestId());
if (planApiScenario != null) { if (planApiScenario != null) {
planEnvMap = apiScenarioEnvService.planEnvMap(queue.getTestId()); // envMap不为空的话可以看做是需要指定环境运行 为空的话则按照默认环境运行
queue.setEvnMap(JSON.toJSONString(planEnvMap)); if (MapUtils.isEmpty(JSON.parseObject(queue.getEvnMap(), Map.class))) {
planEnvMap = apiScenarioEnvService.planEnvMap(queue.getTestId());
queue.setEvnMap(JSON.toJSONString(planEnvMap));
}
scenario = apiScenarioMapper.selectByPrimaryKey(planApiScenario.getApiScenarioId()); scenario = apiScenarioMapper.selectByPrimaryKey(planApiScenario.getApiScenarioId());
} }
} }

View File

@ -55,7 +55,9 @@ import {
getModuleByProjectId, getModuleByProjectId,
getModuleByRelevanceProjectId, getModuleByRelevanceProjectId,
getModuleByTrash, getModuleByTrash,
posScenarioModule, postModuleByProjectId, postModuleByTrash, posScenarioModule,
postModuleByProjectId,
postModuleByTrash,
} from '@/api/scenario-module'; } from '@/api/scenario-module';
export default { export default {
@ -167,17 +169,17 @@ export default {
this.param = {}; this.param = {};
}, },
}, },
created(){ created() {
this.$EventBus.$on("scenarioConditionBus", (param)=>{ this.$EventBus.$on('scenarioConditionBus', (param) => {
this.param = param; this.param = param;
this.list(); this.list();
}) });
}, },
beforeDestroy() { beforeDestroy() {
this.$EventBus.$off("scenarioConditionBus", (param)=>{ this.$EventBus.$off('scenarioConditionBus', (param) => {
this.param = param; this.param = param;
this.list(); this.list();
}) });
}, },
methods: { methods: {
handleImport() { handleImport() {
@ -352,7 +354,9 @@ export default {
}, },
enableTrash() { enableTrash() {
this.condition.trashEnable = true; this.condition.trashEnable = true;
this.$emit('enableTrash', this.condition.trashEnable); this.$nextTick(() => {
this.$emit('enableTrash', this.condition.trashEnable);
});
}, },
removeModuleId(nodeIds) { removeModuleId(nodeIds) {
if (localStorage.getItem('scenarioModule') && localStorage.getItem('scenarioModule') === nodeIds[0]) { if (localStorage.getItem('scenarioModule') && localStorage.getItem('scenarioModule') === nodeIds[0]) {

View File

@ -1,19 +1,116 @@
import i18n from "@/i18n"; import i18n from "@/i18n";
export const REPORT_STATUS_MAP = new Map([ export const REPORT_STATUS_MAP = new Map([
["success", {name: i18n.t('test_track.plan_view.pass'), itemStyle: {color: '#67C23A'}}], [
["Success", {name: i18n.t('test_track.plan_view.pass'), itemStyle: {color: '#67C23A'}}], "success",
["SUCCESS", {name: i18n.t('test_track.plan_view.pass'), itemStyle: {color: '#67C23A'}}], {
["Pass", {name: i18n.t('test_track.plan_view.pass'), itemStyle: {color: '#67C23A'}}], name: i18n.t("test_track.plan_view.pass"),
["error", {name: i18n.t('test_track.plan_view.failure'), itemStyle: {color: '#F56C6C'}}], itemStyle: { color: "#67C23A" },
["Error", {name: i18n.t('test_track.plan_view.failure'), itemStyle: {color: '#F56C6C'}}], },
["ERROR", {name: i18n.t('test_track.plan_view.failure'), itemStyle: {color: '#F56C6C'}}], ],
["Fail", {name: i18n.t('test_track.plan_view.failure'), itemStyle: {color: '#F56C6C'}}], [
["Failure", {name: i18n.t('test_track.plan_view.failure'), itemStyle: {color: '#F56C6C'}}], "Success",
["Prepare", {name: i18n.t('api_test.home_page.detail_card.unexecute'), itemStyle: {color: '#909399'}}], {
["PENDING", {name: i18n.t('api_test.home_page.detail_card.unexecute'), itemStyle: {color: '#909399'}}], name: i18n.t("test_track.plan_view.pass"),
["Underway", {name: i18n.t('api_test.home_page.detail_card.unexecute'), itemStyle: {color: '#909399'}}], itemStyle: { color: "#67C23A" },
["RERUNNING", {name: i18n.t('api_test.home_page.detail_card.unexecute'), itemStyle: {color: '#909399'}}], },
["FAKE_ERROR", {name: i18n.t('error_report_library.option.name'), itemStyle: {color: '#F6972A'}}], ],
["run", {name: i18n.t('test_track.plan_view.running'), itemStyle: {color: '#DEDE10'}}], [
"SUCCESS",
{
name: i18n.t("test_track.plan_view.pass"),
itemStyle: { color: "#67C23A" },
},
],
[
"Pass",
{
name: i18n.t("test_track.plan_view.pass"),
itemStyle: { color: "#67C23A" },
},
],
[
"error",
{
name: i18n.t("test_track.plan_view.failure"),
itemStyle: { color: "#F56C6C" },
},
],
[
"Error",
{
name: i18n.t("test_track.plan_view.failure"),
itemStyle: { color: "#F56C6C" },
},
],
[
"ERROR",
{
name: i18n.t("test_track.plan_view.failure"),
itemStyle: { color: "#F56C6C" },
},
],
[
"Fail",
{
name: i18n.t("test_track.plan_view.failure"),
itemStyle: { color: "#F56C6C" },
},
],
[
"Failure",
{
name: i18n.t("test_track.plan_view.failure"),
itemStyle: { color: "#F56C6C" },
},
],
[
"Prepare",
{
name: i18n.t("api_test.home_page.detail_card.unexecute"),
itemStyle: { color: "#909399" },
},
],
[
"PENDING",
{
name: i18n.t("api_test.home_page.detail_card.unexecute"),
itemStyle: { color: "#909399" },
},
],
[
"Underway",
{
name: i18n.t("api_test.home_page.detail_card.unexecute"),
itemStyle: { color: "#909399" },
},
],
[
"RERUNNING",
{
name: i18n.t("api_test.home_page.detail_card.unexecute"),
itemStyle: { color: "#909399" },
},
],
[
"RUNNING",
{
name: i18n.t("api_test.home_page.detail_card.unexecute"),
itemStyle: { color: "#909399" },
},
],
[
"FAKE_ERROR",
{
name: i18n.t("error_report_library.option.name"),
itemStyle: { color: "#F6972A" },
},
],
[
"run",
{
name: i18n.t("test_track.plan_view.running"),
itemStyle: { color: "#DEDE10" },
},
],
]); ]);