feat(测试计划): 测试计划一键添加缺陷步骤优化

This commit is contained in:
xinxin.wu 2024-10-08 15:00:07 +08:00 committed by Craftsman
parent 31215b4a9a
commit fe4a731f17
2 changed files with 26 additions and 0 deletions

View File

@ -81,6 +81,7 @@ export interface CaseManagementTable {
// 选择类型步骤和预期结果列表 // 选择类型步骤和预期结果列表
export interface StepList { export interface StepList {
num?: string;
id: string; id: string;
step: string; // 步骤 step: string; // 步骤
expected: string; // 预期 expected: string; // 预期
@ -88,6 +89,7 @@ export interface StepList {
showExpected: boolean; // 编辑预期模式 showExpected: boolean; // 编辑预期模式
actualResult?: string; // 实际 actualResult?: string; // 实际
executeResult?: string; // 步骤执行结果 executeResult?: string; // 步骤执行结果
status?: string;
} }
export type StepExecutionResult = Pick<StepList, 'actualResult' | 'executeResult'>; export type StepExecutionResult = Pick<StepList, 'actualResult' | 'executeResult'>;

View File

@ -6,6 +6,7 @@ import { getApiCaseReport, getApiCaseReportStep, getCaseDetail } from '@/api/mod
import { useI18n } from '@/hooks/useI18n'; import { useI18n } from '@/hooks/useI18n';
import { ResponseAssertionTableItem } from '@/models/apiTest/common'; import { ResponseAssertionTableItem } from '@/models/apiTest/common';
import type { StepList } from '@/models/caseManagement/featureCase';
import { FullResponseAssertionType } from '@/enums/apiEnum'; import { FullResponseAssertionType } from '@/enums/apiEnum';
import { CaseLinkEnum } from '@/enums/caseEnum'; import { CaseLinkEnum } from '@/enums/caseEnum';
@ -21,36 +22,58 @@ export const detailContentMap: Record<string, string> = {
}; };
// 获取步骤表格 // 获取步骤表格
function getStepsTable(steps: string) { function getStepsTable(steps: string) {
const alertStatus = ['BLOCKED', 'ERROR'];
const formatContent = (rows: StepList, key: keyof StepList) => {
const valueKey = key as keyof StepList;
return alertStatus.includes(rows.status as string)
? `<span style="color:#f00"> ${rows[valueKey]} </span>`
: `<span> ${rows[valueKey]} </span>`;
};
const templateFieldColumns = [ const templateFieldColumns = [
{ {
title: 'system.orgTemplate.numberIndex', title: 'system.orgTemplate.numberIndex',
dataIndex: 'num', dataIndex: 'num',
slotName: 'num', slotName: 'num',
width: 30, width: 30,
format: (rows: StepList) => {
return formatContent(rows, 'num');
},
}, },
{ {
title: 'system.orgTemplate.useCaseStep', title: 'system.orgTemplate.useCaseStep',
slotName: 'caseStep', slotName: 'caseStep',
dataIndex: 'step', dataIndex: 'step',
width: 200, width: 200,
format: (rows: StepList) => {
return formatContent(rows, 'step');
},
}, },
{ {
title: 'system.orgTemplate.expectedResult', title: 'system.orgTemplate.expectedResult',
dataIndex: 'expected', dataIndex: 'expected',
slotName: 'expectedResult', slotName: 'expectedResult',
width: 200, width: 200,
format: (rows: StepList) => {
return formatContent(rows, 'expected');
},
}, },
{ {
title: 'system.orgTemplate.actualResult', title: 'system.orgTemplate.actualResult',
dataIndex: 'actualResult', dataIndex: 'actualResult',
slotName: 'actualResult', slotName: 'actualResult',
width: 200, width: 200,
format: (rows: StepList) => {
return formatContent(rows, 'actualResult');
},
}, },
{ {
title: 'system.orgTemplate.stepExecutionResult', title: 'system.orgTemplate.stepExecutionResult',
dataIndex: 'executeResult', dataIndex: 'executeResult',
slotName: 'lastExecResult', slotName: 'lastExecResult',
width: 120, width: 120,
format: (rows: StepList) => {
return formatContent(rows, 'executeResult');
},
}, },
]; ];
const stepsData = JSON.parse(steps).map((item: any, index: number) => { const stepsData = JSON.parse(steps).map((item: any, index: number) => {
@ -61,6 +84,7 @@ function getStepsTable(steps: string) {
expected: item.result, expected: item.result,
actualResult: item.actualResult, actualResult: item.actualResult,
executeResult: item.executeResult ? executionResultMap[item.executeResult].statusText : '-', executeResult: item.executeResult ? executionResultMap[item.executeResult].statusText : '-',
status: item.executeResult,
}; };
}); });
if (!stepsData.length) { if (!stepsData.length) {