148148 <div class =" stat-value" >{{ failedTestCases.length }}</div >
149149 <div class =" stat-label" >失败</div >
150150 </div >
151+ <div class =" stat-item" v-if =" skippedTestCases.length > 0" >
152+ <div class =" stat-value" >{{ skippedTestCases.length }}</div >
153+ <div class =" stat-label" >跳过</div >
154+ </div >
151155 <div class =" stat-item" >
152156 <div class =" stat-value" >{{ passRate }}%</div >
153157 <div class =" stat-label" >通过率</div >
177181 :label =" `失败 (${failedTestCases.length})`"
178182 >
179183 </t-tab-panel >
184+ <t-tab-panel
185+ value =" skipped"
186+ :label =" `跳过 (${skippedTestCases.length})`"
187+ >
188+ </t-tab-panel >
180189 </t-tabs >
181190 </div >
182191 <div class =" test-cases-toolbar" >
@@ -316,6 +325,9 @@ const passedTestCases = computed(() =>
316325const failedTestCases = computed (() =>
317326 testCases .value .filter ((tc ) => tc .status === " failed" ),
318327);
328+ const skippedTestCases = computed (() =>
329+ testCases .value .filter ((tc ) => tc .status === " skipped" ),
330+ );
319331
320332// 根据标签页过滤的测例
321333const tabFilteredTestCases = computed (() => {
@@ -324,6 +336,8 @@ const tabFilteredTestCases = computed(() => {
324336 return passedTestCases .value ;
325337 case " failed" :
326338 return failedTestCases .value ;
339+ case " skipped" :
340+ return skippedTestCases .value ;
327341 default :
328342 return allTestCases .value ;
329343 }
@@ -420,10 +434,11 @@ const handleSortChange = (sortInfo) => {
420434};
421435
422436const passRate = computed (() => {
423- if (allTestCases .value .length === 0 ) return 0 ;
424- return Math .round (
425- (passedTestCases .value .length / allTestCases .value .length ) * 100 ,
426- );
437+ // 通过率 = 通过数 / (通过数 + 失败数) * 100,跳过测例不计入分母
438+ const validCases =
439+ passedTestCases .value .length + failedTestCases .value .length ;
440+ if (validCases === 0 ) return 0 ;
441+ return Math .round ((passedTestCases .value .length / validCases) * 100 );
427442});
428443
429444const getStatusText = (status ) => {
0 commit comments