fix(接口测试): 场景不能引用没有步骤的场景

--bug=1014432 --user=宋天阳 【接口测试】场景中复制/引用空场景-生成报告空场景步骤统计为未执行
https://www.tapd.cn/55049933/s/1203448
This commit is contained in:
song-tianyang 2022-07-18 12:51:48 +08:00 committed by 建国
parent ac350d3b27
commit cb344fed5d
6 changed files with 61 additions and 21 deletions

View File

@ -1362,10 +1362,29 @@ export default {
confirmButtonText: this.$t('commons.confirm'), confirmButtonText: this.$t('commons.confirm'),
callback: (action) => { callback: (action) => {
if (action === 'confirm') { if (action === 'confirm') {
const parent = node.parent let parent = node.parent
const hashTree = parent.data.hashTree || parent.data; let hashTree = parent.data.hashTree || parent.data;
const index = hashTree.findIndex(d => d.resourceId !== undefined && row.resourceId !== undefined && d.resourceId === row.resourceId) let index = hashTree.findIndex(d => d.resourceId !== undefined && row.resourceId !== undefined && d.resourceId === row.resourceId)
hashTree.splice(index, 1); hashTree.splice(index, 1);
//
while (
parent &&
parent.data &&
parent.data.hashTree &&
parent.data.hashTree.length <= 0 &&
parent.data.type === "scenario"
) {
parent = parent.parent;
if (!parent) {
break;
}
hashTree = parent.data.hashTree || parent.data;
index = hashTree.findIndex(
(d) =>
d.id != undefined && row.id != undefined && d.id === row.id
);
hashTree.splice(index, 1);
}
this.sort(); this.sort();
this.forceRerender(); this.forceRerender();
} }

View File

@ -108,7 +108,11 @@ export default {
this.buttonIsWorking = false; this.buttonIsWorking = false;
}, },
createScenarioDefinition(scenarios, data, referenced) { createScenarioDefinition(scenarios, data, referenced) {
let emptyStepScenarios = "";
data.forEach(item => { data.forEach(item => {
if (!item.stepTotal || item.stepTotal == 0) {
emptyStepScenarios += item.name + ",";
} else {
let scenarioDefinition = JSON.parse(item.scenarioDefinition); let scenarioDefinition = JSON.parse(item.scenarioDefinition);
if (scenarioDefinition && scenarioDefinition.hashTree) { if (scenarioDefinition && scenarioDefinition.hashTree) {
let obj = { let obj = {
@ -128,7 +132,14 @@ export default {
}; };
scenarios.push(obj); scenarios.push(obj);
} }
}
}); });
if (emptyStepScenarios !== "") {
if (emptyStepScenarios.endsWith(",")) {
emptyStepScenarios = emptyStepScenarios.substring(0, emptyStepScenarios.length - 1);
this.$error(this.$t('api_test.scenario.scenario_step_is_empty', [emptyStepScenarios]));
}
}
}, },
getScenarioDefinition(referenced) { getScenarioDefinition(referenced) {
this.buttonIsWorking = true; this.buttonIsWorking = true;

View File

@ -41,6 +41,10 @@
}} }}
</el-tag> </el-tag>
<span class="ms-tag ms-step-name-api">{{ getProjectName(scenario.projectId) }}</span> <span class="ms-tag ms-step-name-api">{{ getProjectName(scenario.projectId) }}</span>
<el-tooltip v-if="(!scenario.hashTree || scenario.hashTree.length === 0) && scenario.referenced==='REF'"
class="ms-num" effect="dark" :content="$t('api_test.scenario.base_scenario_step_is_empty')" placement="top" style="margin-left: 5px">
<i class="el-icon-warning"/>
</el-tooltip>
</template> </template>
<template v-slot:debugStepCode> <template v-slot:debugStepCode>
<span v-if="node.data.testing" class="ms-test-running"> <span v-if="node.data.testing" class="ms-test-running">

View File

@ -1501,6 +1501,8 @@ export default {
name: "Scenario Name", name: "Scenario Name",
base_url: "Base URL", base_url: "Base URL",
base_url_description: "Base URL as URL prefix for all requests", base_url_description: "Base URL as URL prefix for all requests",
scenario_step_is_empty: "Scenario: {0} has none step!",
base_scenario_step_is_empty:"Scenario step is empty!",
url_invalid: "Invalid URL", url_invalid: "Invalid URL",
variables: "Variables", variables: "Variables",
headers: "Headers", headers: "Headers",

View File

@ -1509,6 +1509,8 @@ export default {
name: "场景名称", name: "场景名称",
base_url: "基础URL", base_url: "基础URL",
base_url_description: "基础URL作为所有请求的URL前缀", base_url_description: "基础URL作为所有请求的URL前缀",
scenario_step_is_empty: "场景: {0} 的步骤为空,无法导入",
base_scenario_step_is_empty:"原场景步骤为空",
variables: "自定义变量", variables: "自定义变量",
headers: "请求头", headers: "请求头",
kv_description: "所有请求可以使用自定义变量", kv_description: "所有请求可以使用自定义变量",

View File

@ -1506,6 +1506,8 @@ export default {
name: "場景名稱", name: "場景名稱",
base_url: "基礎URL", base_url: "基礎URL",
base_url_description: "基礎URL作為所有請求的URL前綴", base_url_description: "基礎URL作為所有請求的URL前綴",
scenario_step_is_empty: "場景: {0} 的步驟為空,無法導入",
base_scenario_step_is_empty:"原場景步驟為空",
variables: "自定義變量", variables: "自定義變量",
headers: "請求頭", headers: "請求頭",
kv_description: "所有請求可以使用自定義變量", kv_description: "所有請求可以使用自定義變量",