feat(接口测试): 修复批量执行用例的集合报告不显示未执行统计的问题
--bug=1011394 --user=宋天阳 【接口测试】接口用例批量执行-集合报告里没有未执行状态 https://www.tapd.cn/55049933/s/1120950
This commit is contained in:
parent
fe30cc441c
commit
6e880576ca
|
@ -210,6 +210,11 @@ public class ApiScenarioReportStructureService {
|
||||||
} else {
|
} else {
|
||||||
totalTime.set((totalTime.longValue() + (step.getValue().getEndTime() - step.getValue().getStartTime())));
|
totalTime.set((totalTime.longValue() + (step.getValue().getEndTime() - step.getValue().getStartTime())));
|
||||||
}
|
}
|
||||||
|
//判断是否是未执行
|
||||||
|
if (step.getValue() instanceof RequestResultExpandDTO
|
||||||
|
&& StringUtils.equalsIgnoreCase(((RequestResultExpandDTO) step.getValue()).getStatus(), "unexecute")) {
|
||||||
|
unExecute.set(unExecute.longValue() + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(step.getChildren())) {
|
if (CollectionUtils.isNotEmpty(step.getChildren())) {
|
||||||
calculate(step.getChildren(), totalScenario, scenarioError, totalTime, errorReport, unExecute, isErrorFirst);
|
calculate(step.getChildren(), totalScenario, scenarioError, totalTime, errorReport, unExecute, isErrorFirst);
|
||||||
|
@ -328,7 +333,8 @@ public class ApiScenarioReportStructureService {
|
||||||
// 组装报告
|
// 组装报告
|
||||||
if (CollectionUtils.isNotEmpty(reportResults)) {
|
if (CollectionUtils.isNotEmpty(reportResults)) {
|
||||||
reportDTO.setTotal(reportResults.size());
|
reportDTO.setTotal(reportResults.size());
|
||||||
reportDTO.setError(reportResults.stream().filter(e -> StringUtils.equalsAnyIgnoreCase(e.getStatus(), "Error", "STOP")).collect(Collectors.toList()).size());
|
reportDTO.setError(reportResults.stream().filter(e -> StringUtils.equalsAnyIgnoreCase(e.getStatus(), "Error")).collect(Collectors.toList()).size());
|
||||||
|
reportDTO.setUnExecute(reportResults.stream().filter(e -> StringUtils.equalsAnyIgnoreCase(e.getStatus(), "STOP")).collect(Collectors.toList()).size());
|
||||||
reportDTO.setErrorCode(reportResults.stream().filter(e -> StringUtils.isNotEmpty(e.getErrorCode())).collect(Collectors.toList()).size());
|
reportDTO.setErrorCode(reportResults.stream().filter(e -> StringUtils.isNotEmpty(e.getErrorCode())).collect(Collectors.toList()).size());
|
||||||
reportDTO.setPassAssertions(reportResults.stream().mapToLong(ApiDefinitionExecResultVo::getPassAssertions).sum());
|
reportDTO.setPassAssertions(reportResults.stream().mapToLong(ApiDefinitionExecResultVo::getPassAssertions).sum());
|
||||||
reportDTO.setTotalAssertions(reportResults.stream().mapToLong(ApiDefinitionExecResultVo::getTotalAssertions).sum());
|
reportDTO.setTotalAssertions(reportResults.stream().mapToLong(ApiDefinitionExecResultVo::getTotalAssertions).sum());
|
||||||
|
@ -338,6 +344,7 @@ public class ApiScenarioReportStructureService {
|
||||||
//统计步骤数据
|
//统计步骤数据
|
||||||
reportDTO.setScenarioStepTotal(reportResults.size());
|
reportDTO.setScenarioStepTotal(reportResults.size());
|
||||||
reportDTO.setScenarioStepError(reportDTO.getError());
|
reportDTO.setScenarioStepError(reportDTO.getError());
|
||||||
|
reportDTO.setScenarioStepUnExecuteReport(reportDTO.getUnExecute());
|
||||||
reportDTO.setScenarioStepErrorReport(0);
|
reportDTO.setScenarioStepErrorReport(0);
|
||||||
|
|
||||||
ApiScenarioReportStructureExample structureExample = new ApiScenarioReportStructureExample();
|
ApiScenarioReportStructureExample structureExample = new ApiScenarioReportStructureExample();
|
||||||
|
|
|
@ -17,7 +17,8 @@
|
||||||
<span class="ms-req-span"> {{ content.success ? content.success + content.error : 0 }} 请求</span>
|
<span class="ms-req-span"> {{ content.success ? content.success + content.error : 0 }} 请求</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<ms-chart id="chart" ref="chart" :options="options" :height="220" style="margin-right: 10px" :autoresize="true" v-else/>
|
<ms-chart id="chart" ref="chart" :options="options" :height="220" style="margin-right: 10px"
|
||||||
|
:autoresize="true" v-else/>
|
||||||
<el-row type="flex" justify="center" align="middle" style="width: 150px">
|
<el-row type="flex" justify="center" align="middle" style="width: 150px">
|
||||||
<div>
|
<div>
|
||||||
<div class="metric-icon-box" style="height: 26px">
|
<div class="metric-icon-box" style="height: 26px">
|
||||||
|
@ -37,14 +38,18 @@
|
||||||
<div class="metric-icon-box" v-if="content.errorCode > 0" style="height: 26px">
|
<div class="metric-icon-box" v-if="content.errorCode > 0" style="height: 26px">
|
||||||
<span class="ms-point-error-code" style="margin: 7px;float: left;"/>
|
<span class="ms-point-error-code" style="margin: 7px;float: left;"/>
|
||||||
<div class="metric-box" v-if="content.errorCode > 0">
|
<div class="metric-box" v-if="content.errorCode > 0">
|
||||||
<div class="value" style="font-size: 12px">{{ content.errorCode }} {{ $t('error_report_library.option.name') }}</div>
|
<div class="value" style="font-size: 12px">{{ content.errorCode }}
|
||||||
|
{{ $t('error_report_library.option.name') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-divider v-if="content.unExecute > 0"></el-divider>
|
<el-divider v-if="content.unExecute > 0"></el-divider>
|
||||||
<div class="metric-icon-box" v-if="content.unExecute > 0" style="height: 26px">
|
<div class="metric-icon-box" v-if="content.unExecute > 0" style="height: 26px">
|
||||||
<span class="ms-point-unexecute" style="margin: 7px;float: left;"/>
|
<span class="ms-point-unexecute" style="margin: 7px;float: left;"/>
|
||||||
<div class="metric-box" v-if="content.unExecute > 0">
|
<div class="metric-box" v-if="content.unExecute > 0">
|
||||||
<div class="value" style="font-size: 12px">{{ content.unExecute }} {{ $t('api_test.home_page.detail_card.unexecute') }}</div>
|
<div class="value" style="font-size: 12px">{{ content.unExecute }}
|
||||||
|
{{ $t('api_test.home_page.detail_card.unexecute') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -70,7 +75,8 @@
|
||||||
<div class="value">{{ content.scenarioError ? content.scenarioError : 0 }}</div>
|
<div class="value">{{ content.scenarioError ? content.scenarioError : 0 }}</div>
|
||||||
<div class="name">{{ $t('api_report.fail') }}</div>
|
<div class="name">{{ $t('api_report.fail') }}</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="ms-point-error-code" v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 "/>
|
<span class="ms-point-error-code"
|
||||||
|
v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 "/>
|
||||||
<div class="metric-box" v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 ">
|
<div class="metric-box" v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 ">
|
||||||
<div class="value">{{ content.scenarioErrorReport ? content.scenarioErrorReport : 0 }}</div>
|
<div class="value">{{ content.scenarioErrorReport ? content.scenarioErrorReport : 0 }}</div>
|
||||||
<div class="name">{{ $t('error_report_library.option.name') }}</div>
|
<div class="name">{{ $t('error_report_library.option.name') }}</div>
|
||||||
|
@ -98,14 +104,18 @@
|
||||||
<div class="value">{{ content.scenarioStepError ? content.scenarioStepError : 0 }}</div>
|
<div class="value">{{ content.scenarioStepError ? content.scenarioStepError : 0 }}</div>
|
||||||
<div class="name">{{ $t('api_report.fail') }}</div>
|
<div class="name">{{ $t('api_report.fail') }}</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="ms-point-error-code" v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 "/>
|
<span class="ms-point-error-code"
|
||||||
|
v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 "/>
|
||||||
<div class="metric-box" v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 ">
|
<div class="metric-box" v-if="content.scenarioErrorReport > 0 || content.scenarioStepErrorReport > 0 ">
|
||||||
<div class="value">{{ content.scenarioStepErrorReport ? content.scenarioStepErrorReport : 0 }}</div>
|
<div class="value">{{ content.scenarioStepErrorReport ? content.scenarioStepErrorReport : 0 }}</div>
|
||||||
<div class="name">{{ $t('error_report_library.option.name') }}</div>
|
<div class="name">{{ $t('error_report_library.option.name') }}</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="ms-point-unexecute" v-if="content.unExecute > 0 || content.unExecute > 0 "/>
|
<span class="ms-point-unexecute" v-if="content.unExecute > 0 || content.unExecute > 0 "/>
|
||||||
<div class="metric-box" v-if="content.unExecute > 0 || content.unExecute > 0 ">
|
<div class="metric-box" v-if="content.unExecute > 0 || content.unExecute > 0 ">
|
||||||
<div class="value">{{ content.scenarioStepUnExecuteReport ? content.scenarioStepUnExecuteReport : 0 }}</div>
|
<div class="value">{{
|
||||||
|
content.scenarioStepUnExecuteReport ? content.scenarioStepUnExecuteReport : 0
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
<div class="name">{{ $t('api_test.home_page.detail_card.unexecute') }}</div>
|
<div class="name">{{ $t('api_test.home_page.detail_card.unexecute') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -199,7 +209,7 @@
|
||||||
computed: {
|
computed: {
|
||||||
options() {
|
options() {
|
||||||
return {
|
return {
|
||||||
color: ['#67C23A', '#F56C6C' ,'#F6972A'],
|
color: ['#67C23A', '#F56C6C', '#F6972A', '#9C9B9A'],
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'item',
|
trigger: 'item',
|
||||||
formatter: '{b}: {c} ({d}%)'
|
formatter: '{b}: {c} ({d}%)'
|
||||||
|
@ -243,6 +253,7 @@
|
||||||
{value: this.content.success},
|
{value: this.content.success},
|
||||||
{value: this.content.error},
|
{value: this.content.error},
|
||||||
{value: this.content.errorCode},
|
{value: this.content.errorCode},
|
||||||
|
{value: this.content.unExecute},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -377,6 +388,7 @@
|
||||||
line-height: 110px;
|
line-height: 110px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ms-point-success {
|
.ms-point-success {
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
|
|
Loading…
Reference in New Issue