feat(测试跟踪): 批量执行测试计划

--user=郭雨琦
测试计划执行按钮增加单独保存测试计划运行配置的功能
This commit is contained in:
guoyuqi 2022-04-13 13:26:30 +08:00 committed by xiaomeinvG
parent 0be6fe161e
commit 36c3d59660
4 changed files with 65 additions and 14 deletions

View File

@ -216,6 +216,12 @@ public class TestPlanController {
return testPlanService.getPlanCaseEnv(plan.getId());
}
@PostMapping("/edit/runModeConfig")
public void updateRunModeConfig(@RequestBody TestplanRunRequest testplanRunRequest) {
testPlanService.updateRunModeConfig(testplanRunRequest);
}
@PostMapping("/run")
public String run(@RequestBody TestplanRunRequest testplanRunRequest) {
return testPlanService.runPlan(testplanRunRequest);

View File

@ -73,7 +73,7 @@ import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -1847,9 +1847,18 @@ public class TestPlanService {
String envType = testplanRunRequest.getEnvironmentType();
Map<String, String> envMap = testplanRunRequest.getEnvMap();
String environmentGroupId = testplanRunRequest.getEnvironmentGroupId();
String testPlanId = testplanRunRequest.getTestPlanId();
RunModeConfigDTO runModeConfig = getRunModeConfigDTO(testplanRunRequest, envType, envMap, environmentGroupId, testPlanId);
String apiRunConfig = JSONObject.toJSONString(runModeConfig);
updatePlan(testplanRunRequest, testPlanId);
return this.run(testPlanId, testplanRunRequest.getProjectId(),
testplanRunRequest.getUserId(), testplanRunRequest.getTriggerMode(),testplanRunRequest.getPlanScheduleReportInfoDTO() != null ? testplanRunRequest.getPlanScheduleReportInfoDTO() : null, apiRunConfig);
}
private RunModeConfigDTO getRunModeConfigDTO(TestplanRunRequest testplanRunRequest, String envType, Map<String, String> envMap, String environmentGroupId, String testPlanId) {
RunModeConfigDTO runModeConfig = new RunModeConfigDTO();
runModeConfig.setEnvironmentType(testplanRunRequest.getEnvironmentType());
String testPlanId = testplanRunRequest.getTestPlanId();
if (StringUtils.equals(envType, EnvironmentType.JSON.name()) && !envMap.isEmpty()) {
runModeConfig.setEnvMap(testplanRunRequest.getEnvMap());
this.setPlanCaseEnv(testPlanId, runModeConfig);
@ -1857,7 +1866,6 @@ public class TestPlanService {
runModeConfig.setEnvironmentGroupId(testplanRunRequest.getEnvironmentGroupId());
this.setPlanCaseEnv(testPlanId, runModeConfig);
}
runModeConfig.setMode(testplanRunRequest.getMode());
runModeConfig.setResourcePoolId(testplanRunRequest.getResourcePoolId());
runModeConfig.setOnSampleError(Boolean.parseBoolean(testplanRunRequest.getOnSampleError()));
@ -1866,16 +1874,16 @@ public class TestPlanService {
} else {
runModeConfig.setReportType(testplanRunRequest.getReportType());
}
String apiRunConfig = JSONObject.toJSONString(runModeConfig);
return runModeConfig;
}
private void updatePlan(TestplanRunRequest testplanRunRequest, String testPlanId) {
String request = JSON.toJSONString(testplanRunRequest);
TestPlanWithBLOBs testPlanWithBLOBs = testPlanMapper.selectByPrimaryKey(testPlanId);
if(testPlanWithBLOBs.getRunModeConfig()==null||!(StringUtils.equals(request,testPlanWithBLOBs.getRunModeConfig()))){
testPlanWithBLOBs.setRunModeConfig(request);
testPlanMapper.updateByPrimaryKeyWithBLOBs(testPlanWithBLOBs);
}
return this.run(testPlanId, testplanRunRequest.getProjectId(),
testplanRunRequest.getUserId(), testplanRunRequest.getTriggerMode(),testplanRunRequest.getPlanScheduleReportInfoDTO() != null ? testplanRunRequest.getPlanScheduleReportInfoDTO() : null, apiRunConfig);
}
public void setPlanCaseEnv(String planId, RunModeConfigDTO runModeConfig) {
@ -2139,4 +2147,8 @@ public class TestPlanService {
}
}
public void updateRunModeConfig(TestplanRunRequest testplanRunRequest) {
String testPlanId = testplanRunRequest.getTestPlanId();
updatePlan(testplanRunRequest, testPlanId);
}
}

View File

@ -75,7 +75,18 @@
</el-row>
</div>
<template v-slot:footer>
<ms-dialog-footer @cancel="close" @confirm="handleRunBatch"/>
<div class="dialog-footer">
<el-button @click="close" >{{$t('commons.cancel')}}</el-button>
<el-dropdown @command="handleCommand" style="margin-left: 5px">
<el-button type="primary" >
{{$t('load_test.save_and_run')}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="run">{{$t('load_test.save_and_run')}}</el-dropdown-item>
<el-dropdown-item command="save">{{$t('commons.save')}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-dialog>
</template>
@ -107,6 +118,14 @@ export default {
projectEnvListMap: {},
projectList: [],
projectIds: new Set(),
options: [{
value: 'confirmAndRun',
label: this.$t('load_test.save_and_run')
}, {
value: 'save',
label: this.$t('commons.save')
}],
value: 'confirmAndRun'
};
},
props: ['planCaseIds', 'type', 'planId'],
@ -180,6 +199,15 @@ export default {
}
this.$refs.envPopover.openEnvSelect();
});
},
handleCommand(command){
if (command === 'run') {
this.runConfig.isRun = true
this.handleRunBatch();
} else {
this.runConfig.isRun = false
this.handleRunBatch();
}
}
},
};

View File

@ -789,12 +789,17 @@ export default {
param.environmentType = environmentType;
param.environmentGroupId = environmentGroupId;
param.requestOriginator = "TEST_PLAN";
this.$refs.taskCenter.open();
this.result = this.$post('test/plan/run/', param, () => {
this.$success(this.$t('commons.run_success'));
}, error => {
// this.$error(error.message);
});
if(config.isRun === true){
this.$refs.taskCenter.open();
this.result = this.$post('test/plan/run/', param, () => {
this.$success(this.$t('commons.run_success'));
});
}else{
this.result = this.$post('test/plan/edit/runModeConfig', param, () => {
this.$success(this.$t('commons.save_success'));
});
}
},
saveFollow(row) {
if (row.showFollow) {