fix(接口测试): 修复并行控制器相关问题

--bug=1028021 --user=王孝刚 【接口测试】场景-生成报告-并行控制器下的多了断言步骤
https://www.tapd.cn/55049933/s/1397715
This commit is contained in:
wxg0103 2023-07-26 14:41:39 +08:00 committed by fit2-zhao
parent 7f4c7a1a6b
commit 24a49c9b5a
6 changed files with 36 additions and 32 deletions

View File

@ -663,7 +663,8 @@ public class ApiScenarioReportStructureService {
allUnExecute.set(allUnExecute.longValue() + 1);
}
}
if (step.getValue() == null && StringUtils.equals(step.getType(), "GenericController") && StringUtils.equalsIgnoreCase(step.getTotalStatus(), ApiReportStatus.PENDING.name())) {
if (step.getValue() == null && StringUtils.containsAnyIgnoreCase(step.getType(), "GenericController", "IfController", "LoopController", "TransactionController")
&& StringUtils.equalsIgnoreCase(step.getTotalStatus(), ApiReportStatus.PENDING.name())) {
allUnExecute.set(allUnExecute.longValue() + 1);
}
if (CollectionUtils.isNotEmpty(step.getChildren())) {

View File

@ -17,11 +17,11 @@
:pool-name="poolName"
:is-share="isShare"
@reportExport="handleExport"
@reportSave="handleSave" />
@reportSave="handleSave"/>
<!-- content -->
<main v-if="isNotRunning">
<!-- content header chart -->
<ms-metric-chart :content="content" :totalTime="totalTime" :report="report" />
<ms-metric-chart :content="content" :totalTime="totalTime" :report="report"/>
<el-tabs v-model="activeName" @tab-click="handleClick" style="min-width: 1200px">
<!-- all step-->
@ -33,7 +33,7 @@
:is-share="isShare"
:share-id="shareId"
v-on:requestResult="requestResult"
ref="resultsTree" />
ref="resultsTree"/>
</el-tab-pane>
<!-- fail step -->
<el-tab-pane name="fail">
@ -46,7 +46,7 @@
:share-id="shareId"
:treeData="errorTreeNodes"
ref="failsTree"
:errorReport="content.error" />
:errorReport="content.error"/>
</el-tab-pane>
<!--error step -->
<el-tab-pane name="errorReport" v-if="content.errorCode > 0">
@ -60,7 +60,7 @@
:share-id="shareId"
:console="content.console"
:treeData="fakeErrorTreeNodes"
ref="errorReportTree" />
ref="errorReportTree"/>
</el-tab-pane>
<!-- Not performed step -->
<el-tab-pane name="unExecute" v-if="content.unExecute > 0">
@ -74,7 +74,7 @@
:share-id="shareId"
:console="content.console"
:treeData="unExecuteTreeNodes"
ref="unExecuteTree" />
ref="unExecuteTree"/>
</el-tab-pane>
<!-- console -->
<el-tab-pane name="console">
@ -85,7 +85,7 @@
:mode="'text'"
:read-only="true"
:data.sync="content.console"
height="calc(100vh - 500px)" />
height="calc(100vh - 500px)"/>
</el-tab-pane>
</el-tabs>
</main>
@ -104,7 +104,7 @@
:mode="mode"
:pool-name="poolName"
:report="report"
:total-time="totalTime" />
:total-time="totalTime"/>
</div>
</template>
@ -119,9 +119,9 @@ import MsMainContainer from 'metersphere-frontend/src/components/MsMainContainer
import MsApiReportExport from './ApiReportExport';
import MsApiReportViewHeader from './ApiReportViewHeader';
import MsInfiniteScrollScenarioResults from '@/business/automation/report/components/InfiniteScrollScenarioResults.vue';
import { RequestFactory } from '../../definition/model/ApiTestModel';
import { getCurrentProjectID } from 'metersphere-frontend/src/utils/token';
import { getUUID } from 'metersphere-frontend/src/utils';
import {RequestFactory} from '../../definition/model/ApiTestModel';
import {getCurrentProjectID} from 'metersphere-frontend/src/utils/token';
import {getUUID} from 'metersphere-frontend/src/utils';
import {
getScenarioReport,
getScenarioReportDetail,
@ -129,7 +129,7 @@ import {
getShareScenarioReport,
reportReName,
} from '../../../api/scenario-report';
import { STEP } from '../../automation/scenario/Setting';
import {STEP} from '../../automation/scenario/Setting';
import MsCodeEdit from 'metersphere-frontend/src/components/MsCodeEdit';
import print from 'print-js';
@ -243,10 +243,7 @@ export default {
},
filterNodes(node, status) {
if (status === 'ERROR' || status === 'FAKE_ERROR' || status === 'UN_EXECUTE') {
let data = { ...node };
/*if (!data.value && (!data.children || data.children.length === 0)) {
return null;
}*/
let data = {...node};
if (data.children.length > 0) {
let filteredChildren = [];
for (let i = 0; i < data.children.length; i++) {
@ -268,10 +265,8 @@ export default {
if (data.value && data.value.status === 'PENDING' && data.type !== 'IfController') {
return data;
}
if (data.type === 'IfController' && data.totalStatus === 'PENDING') {
return data;
}
if (data.type === 'GenericController' && data.totalStatus === 'PENDING') {
if ((data.type === 'IfController' || data.type === 'GenericController' || data.type === 'LoopController' || data.type === 'TransactionController')
&& data.totalStatus === 'PENDING') {
return data;
}
} else if (status === 'ERROR') {
@ -666,7 +661,7 @@ export default {
if (this.isNotRunning) {
this.content = JSON.parse(this.report.content);
if (!this.content) {
this.content = { scenarios: [] };
this.content = {scenarios: []};
}
this.formatResult(this.content);
this.getFails();
@ -765,14 +760,14 @@ export default {
// , #771;
this.content.scenarios = [];
if (this.report.reportType === 'API_INTEGRATED' || this.report.reportType === 'UI_INTEGRATED') {
let scenario = { name: '', requestResults: [] };
let scenario = {name: '', requestResults: []};
this.content.scenarios = [scenario];
this.formatExportApi(this.fullTreeNodes, scenario);
} else {
if (this.fullTreeNodes) {
this.fullTreeNodes.forEach((item) => {
if (item.type === 'scenario') {
let scenario = { name: item.label, requestResults: [] };
let scenario = {name: item.label, requestResults: []};
if (this.content.scenarios && this.content.scenarios.length > 0) {
this.content.scenarios.push(scenario);
} else {
@ -785,7 +780,7 @@ export default {
}
}
if (this.content.scenarios && this.content.scenarios[0].requestResults) {
this.content.scenarios[0].requestResults.push({ responseResult: {} });
this.content.scenarios[0].requestResults.push({responseResult: {}});
}
this.reportExportVisible = true;
let reset = this.exportReportReset;

View File

@ -28,8 +28,7 @@
v-if="
node.type !== 'ConstantTimer' &&
node.type !== 'Assertion' &&
node.children &&
node.children.length > 0
node.children
" />
</div>
</el-col>

View File

@ -73,9 +73,6 @@ export default {
},
methods: {
filterNode(value, data) {
if (!data.value && (!data.children || data.children.length === 0)) {
return false;
}
if (!value) return true;
if (data.value) {
if (value === 'FAKE_ERROR') {
@ -90,6 +87,11 @@ export default {
return data.totalStatus !== 'FAKE_ERROR' && data.value.error > 0;
}
}
if (!data.value) {
if (value === 'PENDING' && data.totalStatus === 'PENDING') {
return true;
}
}
return false;
},
filter(val) {

View File

@ -518,6 +518,7 @@ export default {
},
close() {
let saveVariables = [];
let isContinue = true;
this.variables.forEach((item) => {
item.hidden = undefined;
if (item.name && item.name != '') {
@ -526,10 +527,14 @@ export default {
}
if (item.type === 'CSV' && item.files.length === 0) {
this.$warning(this.$t('api_test.variable') + item.name + ' ' + this.$t('api_test.automation.csv_warning'));
this.visible = true;
isContinue = false;
return;
}
});
if (!isContinue) {
this.visible = true;
return;
}
this.selectVariable = '';
this.searchType = '';
this.selectType = 'CONSTANT';

View File

@ -194,7 +194,9 @@ export function hisDataProcessing(array, request) {
const rmIndex = request.hashTree.findIndex((d) => d.id === item.id && d.resourceId === item.resourceId);
request.hashTree.splice(rmIndex, 1);
});
if (request.type && request.type === 'GenericController') {
return;
}
request.hashTree.push(assertions);
}