refactor(接口测试): 优化场景报告显示环境名称和资源池名称

This commit is contained in:
wxg0103 2024-03-19 11:36:58 +08:00 committed by wxg0103
parent cc2c6ed67c
commit c6b19923dc
7 changed files with 76 additions and 20 deletions

View File

@ -10,5 +10,7 @@ import java.util.List;
public class ApiReportDTO extends ApiReport { public class ApiReportDTO extends ApiReport {
@Schema(description = "子节点") @Schema(description = "子节点")
private List<ApiReportStepDTO> children; private List<ApiReportStepDTO> children;
@Schema(description = "控制台信息")
private String console;
} }

View File

@ -72,11 +72,6 @@ public class ApiReportDetailDTO {
*/ */
@Schema(description = "结果内容详情") @Schema(description = "结果内容详情")
private RequestResult content; private RequestResult content;
/**
* 结果内容详情
*/
@Schema(description = "控制台")
private String console;
} }

View File

@ -12,4 +12,11 @@ public class ApiScenarioReportDTO extends ApiScenarioReport {
private List<ApiScenarioReportStepDTO> children; private List<ApiScenarioReportStepDTO> children;
@Schema(description = "步骤总数") @Schema(description = "步骤总数")
private Integer stepTotal; private Integer stepTotal;
@Schema(description = "控制台信息")
private String console;
@Schema(description = "资源池名称")
private String poolName;
@Schema(description = "环境名称")
private String environmentName;
} }

View File

@ -163,6 +163,13 @@ public class ApiReportService {
ApiReportDTO apiReportDTO = new ApiReportDTO(); ApiReportDTO apiReportDTO = new ApiReportDTO();
ApiReport apiReport = checkResource(id); ApiReport apiReport = checkResource(id);
BeanUtils.copyBean(apiReportDTO, apiReport); BeanUtils.copyBean(apiReportDTO, apiReport);
//查询console
ApiReportLogExample consoleExample = new ApiReportLogExample();
consoleExample.createCriteria().andReportIdEqualTo(id);
List<ApiReportLog> apiReportLogs = apiReportLogMapper.selectByExampleWithBLOBs(consoleExample);
if (CollectionUtils.isNotEmpty(apiReportLogs)) {
apiReportDTO.setConsole(new String(apiReportLogs.getFirst().getConsole()));
}
//需要查询出所有的步骤 //需要查询出所有的步骤
if (BooleanUtils.isTrue(apiReport.getIntegrated())) { if (BooleanUtils.isTrue(apiReport.getIntegrated())) {
List<ApiReportStepDTO> apiReportSteps = extApiReportMapper.selectStepsByReportId(id); List<ApiReportStepDTO> apiReportSteps = extApiReportMapper.selectStepsByReportId(id);
@ -190,17 +197,10 @@ public class ApiReportService {
public List<ApiReportDetailDTO> getDetail(String stepId, String reportId) { public List<ApiReportDetailDTO> getDetail(String stepId, String reportId) {
List<ApiReportDetail> apiReportDetails = checkResourceStep(stepId, reportId); List<ApiReportDetail> apiReportDetails = checkResourceStep(stepId, reportId);
List<ApiReportDetailDTO> results = new ArrayList<>(); List<ApiReportDetailDTO> results = new ArrayList<>();
//查询console
ApiReportLogExample example = new ApiReportLogExample();
example.createCriteria().andReportIdEqualTo(reportId);
List<ApiReportLog> apiReportLogs = apiReportLogMapper.selectByExampleWithBLOBs(example);
apiReportDetails.forEach(apiReportDetail -> { apiReportDetails.forEach(apiReportDetail -> {
ApiReportDetailDTO apiReportDetailDTO = new ApiReportDetailDTO(); ApiReportDetailDTO apiReportDetailDTO = new ApiReportDetailDTO();
BeanUtils.copyBean(apiReportDetailDTO, apiReportDetail); BeanUtils.copyBean(apiReportDetailDTO, apiReportDetail);
apiReportDetailDTO.setContent(ApiDataUtils.parseObject(new String(apiReportDetail.getContent()), RequestResult.class)); apiReportDetailDTO.setContent(ApiDataUtils.parseObject(new String(apiReportDetail.getContent()), RequestResult.class));
if (CollectionUtils.isNotEmpty(apiReportLogs)) {
apiReportDetailDTO.setConsole(new String(apiReportLogs.getFirst().getConsole()));
}
results.add(apiReportDetailDTO); results.add(apiReportDetailDTO);
}); });
return results; return results;

View File

@ -12,9 +12,11 @@ import io.metersphere.api.utils.ApiDataUtils;
import io.metersphere.sdk.constants.ApiReportStatus; import io.metersphere.sdk.constants.ApiReportStatus;
import io.metersphere.sdk.dto.api.result.RequestResult; import io.metersphere.sdk.dto.api.result.RequestResult;
import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.mapper.EnvironmentMapper;
import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.BeanUtils;
import io.metersphere.sdk.util.SubListUtils; import io.metersphere.sdk.util.SubListUtils;
import io.metersphere.sdk.util.Translator; import io.metersphere.sdk.util.Translator;
import io.metersphere.system.mapper.TestResourcePoolMapper;
import io.metersphere.system.service.UserLoginService; import io.metersphere.system.service.UserLoginService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
@ -47,6 +49,12 @@ public class ApiScenarioReportService {
private ApiScenarioReportLogService apiScenarioReportLogService; private ApiScenarioReportLogService apiScenarioReportLogService;
@Resource @Resource
private ApiScenarioReportDetailMapper apiScenarioReportDetailMapper; private ApiScenarioReportDetailMapper apiScenarioReportDetailMapper;
@Resource
private ApiScenarioReportLogMapper apiScenarioReportLogMapper;
@Resource
private TestResourcePoolMapper testResourcePoolMapper;
@Resource
private EnvironmentMapper environmentMapper;
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public void insertApiScenarioReport(List<ApiScenarioReport> reports, List<ApiScenarioRecord> records) { public void insertApiScenarioReport(List<ApiScenarioReport> reports, List<ApiScenarioRecord> records) {
@ -174,6 +182,17 @@ public class ApiScenarioReportService {
getStepTree(steps, scenarioReportStepMap); getStepTree(steps, scenarioReportStepMap);
scenarioReportDTO.setStepTotal(steps.size()); scenarioReportDTO.setStepTotal(steps.size());
scenarioReportDTO.setChildren(steps); scenarioReportDTO.setChildren(steps);
//控制台信息 console
ApiScenarioReportLogExample example = new ApiScenarioReportLogExample();
example.createCriteria().andReportIdEqualTo(id);
List<ApiScenarioReportLog> apiScenarioReportLogs = apiScenarioReportLogMapper.selectByExampleWithBLOBs(example);
if (CollectionUtils.isNotEmpty(apiScenarioReportLogs)) {
scenarioReportDTO.setConsole(new String(apiScenarioReportLogs.getFirst().getConsole()));
}
//查询资源池名称
scenarioReportDTO.setPoolName(testResourcePoolMapper.selectByPrimaryKey(scenarioReport.getPoolId()).getName());
//查询环境名称
scenarioReportDTO.setEnvironmentName(environmentMapper.selectByPrimaryKey(scenarioReport.getEnvironmentId()).getName());
return scenarioReportDTO; return scenarioReportDTO;
} }

View File

@ -268,6 +268,12 @@ public class ApiReportControllerTests extends BaseTest {
} }
apiReportService.insertApiReportStep(steps); apiReportService.insertApiReportStep(steps);
ApiReportLog apiReportLog = new ApiReportLog();
apiReportLog.setReportId("test-report-id");
apiReportLog.setId(IDGenerator.nextStr());
apiReportLog.setConsole("test-console".getBytes());
apiReportLogMapper.insert(apiReportLog);
MvcResult mvcResult = this.requestGetWithOk(GET + "test-report-id") MvcResult mvcResult = this.requestGetWithOk(GET + "test-report-id")
.andReturn(); .andReturn();
ApiReportDTO apiReportDTO = ApiDataUtils.parseObject(JSON.toJSONString(parseResponse(mvcResult).get("data")), ApiReportDTO.class); ApiReportDTO apiReportDTO = ApiDataUtils.parseObject(JSON.toJSONString(parseResponse(mvcResult).get("data")), ApiReportDTO.class);
@ -371,11 +377,6 @@ public class ApiReportControllerTests extends BaseTest {
reports.add(apiReportDetail); reports.add(apiReportDetail);
} }
apiReportDetailMapper.batchInsert(reports); apiReportDetailMapper.batchInsert(reports);
ApiReportLog apiReportLog = new ApiReportLog();
apiReportLog.setReportId("test-report-id");
apiReportLog.setId(IDGenerator.nextStr());
apiReportLog.setConsole("test-console".getBytes());
apiReportLogMapper.insert(apiReportLog);
MvcResult mvcResult = this.requestGetWithOk(DETAIL + "test-report-id" + "/" + "test-report-step-id1") MvcResult mvcResult = this.requestGetWithOk(DETAIL + "test-report-id" + "/" + "test-report-step-id1")
.andReturn(); .andReturn();

View File

@ -9,6 +9,7 @@ import io.metersphere.api.dto.scenario.ApiScenarioReportDTO;
import io.metersphere.api.dto.scenario.ApiScenarioReportDetailDTO; import io.metersphere.api.dto.scenario.ApiScenarioReportDetailDTO;
import io.metersphere.api.dto.share.ShareInfoDTO; import io.metersphere.api.dto.share.ShareInfoDTO;
import io.metersphere.api.mapper.ApiScenarioReportDetailMapper; import io.metersphere.api.mapper.ApiScenarioReportDetailMapper;
import io.metersphere.api.mapper.ApiScenarioReportLogMapper;
import io.metersphere.api.mapper.ApiScenarioReportMapper; import io.metersphere.api.mapper.ApiScenarioReportMapper;
import io.metersphere.api.service.scenario.ApiScenarioReportService; import io.metersphere.api.service.scenario.ApiScenarioReportService;
import io.metersphere.api.utils.ApiDataUtils; import io.metersphere.api.utils.ApiDataUtils;
@ -18,11 +19,18 @@ import io.metersphere.project.mapper.ProjectApplicationMapper;
import io.metersphere.sdk.constants.ApiReportStatus; import io.metersphere.sdk.constants.ApiReportStatus;
import io.metersphere.sdk.constants.PermissionConstants; import io.metersphere.sdk.constants.PermissionConstants;
import io.metersphere.sdk.constants.SessionConstants; import io.metersphere.sdk.constants.SessionConstants;
import io.metersphere.sdk.domain.Environment;
import io.metersphere.sdk.domain.EnvironmentExample;
import io.metersphere.sdk.domain.ShareInfo; import io.metersphere.sdk.domain.ShareInfo;
import io.metersphere.sdk.mapper.EnvironmentMapper;
import io.metersphere.sdk.mapper.ShareInfoMapper; import io.metersphere.sdk.mapper.ShareInfoMapper;
import io.metersphere.sdk.util.JSON; import io.metersphere.sdk.util.JSON;
import io.metersphere.system.base.BaseTest; import io.metersphere.system.base.BaseTest;
import io.metersphere.system.controller.handler.ResultHolder; import io.metersphere.system.controller.handler.ResultHolder;
import io.metersphere.system.domain.TestResourcePool;
import io.metersphere.system.domain.TestResourcePoolExample;
import io.metersphere.system.mapper.TestResourcePoolMapper;
import io.metersphere.system.uid.IDGenerator;
import io.metersphere.system.utils.Pager; import io.metersphere.system.utils.Pager;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
@ -56,6 +64,13 @@ public class ApiScenarioReportControllerTests extends BaseTest {
private ShareInfoMapper shareInfoMapper; private ShareInfoMapper shareInfoMapper;
@Resource @Resource
private ProjectApplicationMapper projectApplicationMapper; private ProjectApplicationMapper projectApplicationMapper;
@Resource
private ApiScenarioReportLogMapper apiScenarioReportLogMapper;
@Resource
private TestResourcePoolMapper testResourcePoolMapper;
@Resource
private EnvironmentMapper environmentMapper;
private static final String BASIC = "/api/report/scenario"; private static final String BASIC = "/api/report/scenario";
private static final String PAGE = BASIC + "/page"; private static final String PAGE = BASIC + "/page";
private static final String RENAME = BASIC + "/rename/"; private static final String RENAME = BASIC + "/rename/";
@ -226,6 +241,14 @@ public class ApiScenarioReportControllerTests extends BaseTest {
@Order(6) @Order(6)
public void testGet() throws Exception { public void testGet() throws Exception {
// @@请求成功 // @@请求成功
EnvironmentExample environmentExample = new EnvironmentExample();
environmentExample.createCriteria().andProjectIdEqualTo(DEFAULT_PROJECT_ID).andMockEqualTo(true);
List<Environment> environments = environmentMapper.selectByExample(environmentExample);
TestResourcePoolExample example = new TestResourcePoolExample();
example.createCriteria().andNameEqualTo("默认资源池");
List<TestResourcePool> testResourcePools = testResourcePoolMapper.selectByExample(example);
List<ApiScenarioReport> reports = new ArrayList<>(); List<ApiScenarioReport> reports = new ArrayList<>();
ApiScenarioReport scenarioReport = new ApiScenarioReport(); ApiScenarioReport scenarioReport = new ApiScenarioReport();
scenarioReport.setId("test-scenario-report-id"); scenarioReport.setId("test-scenario-report-id");
@ -235,8 +258,8 @@ public class ApiScenarioReportControllerTests extends BaseTest {
scenarioReport.setCreateUser("admin"); scenarioReport.setCreateUser("admin");
scenarioReport.setUpdateUser("admin"); scenarioReport.setUpdateUser("admin");
scenarioReport.setUpdateTime(System.currentTimeMillis()); scenarioReport.setUpdateTime(System.currentTimeMillis());
scenarioReport.setPoolId("api-pool-id"); scenarioReport.setPoolId(testResourcePools.getFirst().getId());
scenarioReport.setEnvironmentId("api-environment-id"); scenarioReport.setEnvironmentId(environments.getFirst().getId());
scenarioReport.setRunMode("api-run-mode"); scenarioReport.setRunMode("api-run-mode");
scenarioReport.setTriggerMode("api-trigger-mode"); scenarioReport.setTriggerMode("api-trigger-mode");
scenarioReport.setVersionId("api-version-id"); scenarioReport.setVersionId("api-version-id");
@ -262,6 +285,15 @@ public class ApiScenarioReportControllerTests extends BaseTest {
steps.add(apiScenarioReportStep); steps.add(apiScenarioReportStep);
} }
apiScenarioReportService.insertApiScenarioReportStep(steps); apiScenarioReportService.insertApiScenarioReportStep(steps);
//插入console 资源池 环境
ApiScenarioReportLog apiScenarioReportLog = new ApiScenarioReportLog();
apiScenarioReportLog.setId(IDGenerator.nextStr());
apiScenarioReportLog.setReportId("test-scenario-report-id");
apiScenarioReportLog.setConsole("console".getBytes());
apiScenarioReportLogMapper.insert(apiScenarioReportLog);
MvcResult mvcResult = this.requestGetWithOk(GET + "test-scenario-report-id") MvcResult mvcResult = this.requestGetWithOk(GET + "test-scenario-report-id")
.andReturn(); .andReturn();
ApiScenarioReportDTO apiReportDTO = ApiDataUtils.parseObject(JSON.toJSONString(parseResponse(mvcResult).get("data")), ApiScenarioReportDTO.class); ApiScenarioReportDTO apiReportDTO = ApiDataUtils.parseObject(JSON.toJSONString(parseResponse(mvcResult).get("data")), ApiScenarioReportDTO.class);
@ -278,7 +310,7 @@ public class ApiScenarioReportControllerTests extends BaseTest {
.andExpect(status().is5xxServerError()); .andExpect(status().is5xxServerError());
// @@校验权限 // @@校验权限
requestGetPermissionTest(PermissionConstants.PROJECT_API_REPORT_READ, GET + "scenario-report-id0"); requestGetPermissionTest(PermissionConstants.PROJECT_API_REPORT_READ, GET + "test-scenario-report-id");
} }
@Test @Test