From 31b253642a39419e271eb1bd0a24988a1817e770 Mon Sep 17 00:00:00 2001 From: song-tianyang Date: Thu, 27 Jan 2022 11:48:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=B7=E6=B1=82=E4=B8=AD=E5=8C=85=E5=90=AB?= =?UTF-8?q?=E8=AF=AF=E6=8A=A5=E6=96=AD=E8=A8=80=E5=92=8C=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=96=AD=E8=A8=80=E6=97=B6=E6=9C=80=E7=BB=88=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E7=BB=93=E6=9E=9C=E5=A4=B1=E8=B4=A5=E7=9A=84?= =?UTF-8?q?=E7=BC=BA=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复请求中包含误报断言和失败断言时最终用例执行结果失败的缺陷 --- .../api/dto/definition/parse/JMeterScriptUtil.java | 8 ++++---- .../metersphere/commons/utils/ErrorReportLibraryUtil.java | 4 +++- .../java/io/metersphere/commons/utils/ResponseUtil.java | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/parse/JMeterScriptUtil.java b/backend/src/main/java/io/metersphere/api/dto/definition/parse/JMeterScriptUtil.java index eb32451015..7e0eb98382 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/parse/JMeterScriptUtil.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/parse/JMeterScriptUtil.java @@ -74,17 +74,17 @@ public class JMeterScriptUtil { boolean globalPreScriptIsFilter = JMeterScriptUtil.isScriptFilter(preFilterProtocal, protocal); boolean globalPostScriptIsFilter = JMeterScriptUtil.isScriptFilter(postFilterProtocal, protocal); if (isAfterPrivateScript) { - if (isPreScriptExecAfterPrivateScript && !globalPreScriptIsFilter) { + if (isPreScriptExecAfterPrivateScript && !globalPreScriptIsFilter && StringUtils.isNotEmpty(preProcessor.getScript())) { addItemHashTree(preProcessor, samplerHashTree, config, environmentId); } - if (isPostScriptExecAfterPrivateScript && !globalPostScriptIsFilter) { + if (isPostScriptExecAfterPrivateScript && !globalPostScriptIsFilter && StringUtils.isNotEmpty(postProcessor.getScript())) { addItemHashTree(postProcessor, samplerHashTree, config, environmentId); } } else { - if (!isPreScriptExecAfterPrivateScript && !globalPreScriptIsFilter) { + if (!isPreScriptExecAfterPrivateScript && !globalPreScriptIsFilter && StringUtils.isNotEmpty(preProcessor.getScript())) { addItemHashTree(preProcessor, samplerHashTree, config, environmentId); } - if (!isPostScriptExecAfterPrivateScript && !globalPostScriptIsFilter) { + if (!isPostScriptExecAfterPrivateScript && !globalPostScriptIsFilter && StringUtils.isNotEmpty(postProcessor.getScript())) { addItemHashTree(postProcessor, samplerHashTree, config, environmentId); } } diff --git a/backend/src/main/java/io/metersphere/commons/utils/ErrorReportLibraryUtil.java b/backend/src/main/java/io/metersphere/commons/utils/ErrorReportLibraryUtil.java index 495d25b000..e41c234c11 100644 --- a/backend/src/main/java/io/metersphere/commons/utils/ErrorReportLibraryUtil.java +++ b/backend/src/main/java/io/metersphere/commons/utils/ErrorReportLibraryUtil.java @@ -21,12 +21,14 @@ public class ErrorReportLibraryUtil { if (result != null && result.getResponseResult() != null && CollectionUtils.isNotEmpty(result.getResponseResult().getAssertions())) { List errorReportAssertionList = new ArrayList<>(); boolean hasOtherErrorAssertion = false; + int otherAssertionCount = 0; for (ResponseAssertionResult assertion : result.getResponseResult().getAssertions()) { if (StringUtils.startsWith(assertion.getContent(), ERROR_CODE_START)) { errorReportAssertionList.add(assertion); }else { if(!assertion.isPass()){ hasOtherErrorAssertion = true; + otherAssertionCount ++; } } } @@ -46,7 +48,7 @@ public class ErrorReportLibraryUtil { if (result.getResponseResult() != null && StringUtils.equalsIgnoreCase(result.getResponseResult().getResponseCode(), "200") && result.getError() > 0) { - if(!hasOtherErrorAssertion){ + if(otherAssertionCount == 0 || !hasOtherErrorAssertion){ result.setError(result.getError() - 1); } } diff --git a/backend/src/main/java/io/metersphere/commons/utils/ResponseUtil.java b/backend/src/main/java/io/metersphere/commons/utils/ResponseUtil.java index 4ac456106a..50e34c9801 100644 --- a/backend/src/main/java/io/metersphere/commons/utils/ResponseUtil.java +++ b/backend/src/main/java/io/metersphere/commons/utils/ResponseUtil.java @@ -15,11 +15,12 @@ import java.util.Map; public class ResponseUtil { public static RequestResultExpandDTO parseByRequestResult(RequestResult requestResult) { + //解析是否含有误报库信息 + ErrorReportLibraryParseDTO errorCodeDTO = ErrorReportLibraryUtil.parseAssertions(requestResult); + RequestResultExpandDTO expandDTO = new RequestResultExpandDTO(); BeanUtils.copyBean(expandDTO, requestResult); - //解析是否含有误报库信息 - ErrorReportLibraryParseDTO errorCodeDTO = ErrorReportLibraryUtil.parseAssertions(requestResult); if(CollectionUtils.isNotEmpty(errorCodeDTO.getErrorCodeList())){ Map expandMap = new HashMap<>(); expandDTO.setStatus(ExecuteResult.errorReportResult.name());