fix(测试计划): 修复因全局后置脚本导致的接口案例一直执行不结束的缺陷

--bug=1007778 --user=宋天阳 【测试跟踪】测试计划,批量执行接口用例一直在running
https://www.tapd.cn/55049933/s/1072841
This commit is contained in:
song-tianyang 2021-11-23 11:57:57 +08:00 committed by song-tianyang
parent e46261b6ca
commit 1389931dc0
1 changed files with 28 additions and 11 deletions

View File

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import io.metersphere.api.cache.TestPlanReportExecuteCatch;
import io.metersphere.api.dto.datacount.ExecutedCaseInfoResult;
import io.metersphere.api.jmeter.MessageCache;
import io.metersphere.api.jmeter.RequestResult;
import io.metersphere.api.jmeter.TestResult;
import io.metersphere.base.domain.*;
import io.metersphere.base.mapper.ApiDefinitionExecResultMapper;
@ -69,6 +70,13 @@ public class ApiDefinitionExecResultService {
final boolean[] isFirst = {true};
result.getScenarios().forEach(scenarioResult -> {
if (scenarioResult != null && CollectionUtils.isNotEmpty(scenarioResult.getRequestResults())) {
int countExpectProcessResultCount = 0;
for (RequestResult resultItem : scenarioResult.getRequestResults()) {
if (!StringUtils.startsWithAny(resultItem.getName(), "PRE_PROCESSOR_ENV_", "POST_PROCESSOR_ENV_")) {
countExpectProcessResultCount++;
}
}
final int expectProcessResultCount = countExpectProcessResultCount;
scenarioResult.getRequestResults().forEach(item -> {
if (!StringUtils.startsWithAny(item.getName(), "PRE_PROCESSOR_ENV_", "POST_PROCESSOR_ENV_")) {
ApiDefinitionExecResult saveResult = MessageCache.caseExecResourceLock.get(result.getTestId());
@ -77,7 +85,7 @@ public class ApiDefinitionExecResultService {
}
item.getResponseResult().setConsole(result.getConsole());
boolean saved = true;
if (saveResult == null || scenarioResult.getRequestResults().size() > 1) {
if (saveResult == null || expectProcessResultCount > 1) {
saveResult = new ApiDefinitionExecResult();
if (isFirst[0]) {
isFirst[0] = false;
@ -254,6 +262,15 @@ public class ApiDefinitionExecResultService {
result.getScenarios().forEach(scenarioResult -> {
final boolean[] isFirst = {true};
if (scenarioResult != null && CollectionUtils.isNotEmpty(scenarioResult.getRequestResults())) {
int countExpectProcessResultCount = 0;
for (RequestResult resultItem : scenarioResult.getRequestResults()) {
if (!StringUtils.startsWithAny(resultItem.getName(), "PRE_PROCESSOR_ENV_", "POST_PROCESSOR_ENV_")) {
countExpectProcessResultCount++;
}
}
final int expectProcessResultCount = countExpectProcessResultCount;
scenarioResult.getRequestResults().forEach(item -> {
if (!StringUtils.startsWithAny(item.getName(), "PRE_PROCESSOR_ENV_", "POST_PROCESSOR_ENV_")) {
ApiDefinitionExecResult saveResult = MessageCache.caseExecResourceLock.get(result.getTestId());
@ -263,7 +280,7 @@ public class ApiDefinitionExecResultService {
}
item.getResponseResult().setConsole(result.getConsole());
boolean saved = true;
if (saveResult == null || scenarioResult.getRequestResults().size() > 1) {
if (saveResult == null || expectProcessResultCount > 1) {
saveResult = new ApiDefinitionExecResult();
if (isFirst[0]) {
isFirst[0] = false;