fix(UI 自动化): ui测试报告结果与列表结果不一致

--bug=1015832 --user=张大海 【UI测试】场景编辑-生成报告/场景列表-执行-生成结果为失败-测试报告结果显示为成功 https://www.tapd.cn/55049933/s/1224230
This commit is contained in:
zhangdahai112 2022-08-16 15:06:26 +08:00 committed by 刘瑞斌
parent b524ad1f07
commit f95c590cf5
1 changed files with 15 additions and 0 deletions

View File

@ -1,6 +1,7 @@
package io.metersphere.api.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import io.metersphere.api.dto.*;
@ -882,6 +883,20 @@ public class ApiScenarioReportService {
long errorReportResultSize = dto.getRequestResults().stream().filter(requestResult ->
StringUtils.equalsIgnoreCase(requestResult.getStatus(), ExecuteResult.ERROR_REPORT_RESULT.toString())).count();
//类型为ui时的统计
if (StringUtils.isNotEmpty(dto.getRunMode()) && dto.getRunMode().startsWith("UI")) {
try {
errorSize = dto.getRequestResults().stream().filter(requestResult ->
StringUtils.isNotEmpty(requestResult.getResponseResult().getHeaders())
&& JSONArray.parseArray(requestResult.getResponseResult().getHeaders()).stream().filter(
r -> ((JSONObject) r).containsKey("success") && !((JSONObject) r).getBoolean("success")
).count() > 0)
.count();
} catch (Exception e) {
// UI 返回的结果在 headers 里面格式不符合规范的直接认定结果为失败
errorSize = 1;
}
}
String status = dto.getRequestResults().isEmpty() ? ExecuteResult.UN_EXECUTE.toString() : ScenarioStatus.Success.name();
if (errorSize > 0) {
status = ScenarioStatus.Error.name();